Deep Learning project

Dog classification by their categories, including Golden retriver, Husky, Germany shepherd, Canis lupus , and Poodle

Phase 0: Load data from google drive

In [ ]:
# Phase I
# mount drive from google drive
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
In [ ]:
import os
import shutil
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from os import listdir
from os.path import isfile, join
from matplotlib.pyplot import imshow
import matplotlib.image as mpimg

from keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing.image import ImageDataGenerator

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, MaxPool2D, Dropout
import tensorflow as tf 

from tensorflow.keras.callbacks import EarlyStopping
from keras.layers import Dropout, Activation
from tensorflow.keras.layers import BatchNormalization

from keras.regularizers import l2
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

# no idea why it happens:
#       IOError: Image File is truncated
# after the PIL is imported, it is solved
# maybe version conflicts
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True


path = '/content/drive/My Drive/DL/DOG' 
image_width, image_height = 256,256

Count files and plot images distribution of each category, finally show some sample files

In [ ]:
# count total images in the dataset
def count_total_image(path):
    num = 0
    for d in os.listdir(path):
        print("Folder name ", d)
        for files in os.listdir(path+"/"+d):
            for f in os.listdir(path+'/'+d+'/'+files):
                num += 1
    print("Total images = ", num)

# scan directories and display their distribution of each dog categories
def get_distribution_images(path):
    dirs = os.listdir(path+'/train')
    directories = ['Canis lupus','Gold retriever','German sheperd','Husky','Poodle']
    directories_name=['cl','gr','gs','h','p']
    directories_map = {'cl':'Canis lupus', 'gr':'Gold retriever','gs':'German sheperd','h':'Husky','p':'Poodle'}
    fileamount = {}
    for folder in directories_name:
        fileamount[folder] = 0
        for directoryName in os.listdir(path+'/train'):
            if directoryName == folder:
                temp = path+'/train/'+directoryName
                fileamount[folder] += len(os.listdir(temp))
        for directoryName in os.listdir(path+'/test'):
            if directoryName == folder:
                temp = path+'/test/'+directoryName
                fileamount[folder] += len(os.listdir(temp))
        for directoryName in os.listdir(path+'/valid'):
            if directoryName == folder:
                temp = path+'/valid/'+directoryName
                fileamount[folder] += len(os.listdir(temp))
    plt.xticks(rotation=45)
    plt.bar([directories_map[x] for x in fileamount.keys()], fileamount.values())


    plt.show()

count_total_image(path)
get_distribution_images(path)
Folder name  train
Folder name  valid
Folder name  test
Total images =  3176
In [ ]:
# this function is from https://stackoverflow.com/questions/41210823/using-plt-imshow-to-display-multiple-images
def process(filename: str=None) -> None:
    image = mpimg.imread(filename)
    plt.figure()
    plt.imshow(image)


path = '/content/drive/My Drive/DL/DOG' 

# show two image in each folders
def show_sample_images(path):
    files = os.listdir(path)
    for directoryName in files:
        temp = path+'/'+directoryName
        for dir in os.listdir(temp):
            i = 0
            for file in os.listdir(temp+'/'+dir):
                process(temp+'/'+dir+'/'+file)
                i += 1
                if i >= 2:
                    break
            i = 0
show_sample_images(path)
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:5: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
  """
In [ ]:
# this section merge all data into one folder, for the overfitting section
path0 = path+'0/train'
des = path+'0/all/all'
# print(path0, des)
j = 0
for dir in os.listdir(path0):
    # print(dir)
    
    for file in os.listdir(path0+'/'+dir):
        file_name, file_extension = os.path.splitext(file)
        shutil.copy(path0+'/'+dir+'/'+file, des+'/'+str(j)+file_extension)
        j += 1
# print(j)
/content/drive/My Drive/DL/DOG0/train /content/drive/My Drive/DL/DOG0/all/all
cl
gr
gs
h
p
3176
In [ ]:
!ls '/content/drive/My Drive/DL/DOG/valid/cl' |wc -l
115
In [ ]:
!ls '/content/drive/My Drive/DL/DOG0/'
all  test  train

Overfitting

Required to train the whole dataset, some parameters are changed with all data.

In [ ]:
# path0 is the directory containing all images, duplicate in both train and valid folders, no data split in both
path0 = '/content/drive/My Drive/DL/DOG0/'


def get_train_generator(path, image_width, image_height):
    my_generator = ImageDataGenerator(rescale=1./255)
    train_generator = my_generator.flow_from_directory( path+'/train/', target_size=(image_width, image_height), batch_size=32, class_mode='categorical')
    # valid_generator = my_generator.flow_from_directory( path+'/test/', target_size=(image_width, image_height), batch_size=32, class_mode='categorical')
    return train_generator


# can not be bigger, otherwise the dimension becomes negative
def overfitting(train_generator, layers,image_width, image_height):
    model = Sequential()
    j = 0
    for i in range(len(layers)):
        if i == 0:
            model.add( Conv2D( layers[i], ( 3, 3 ), activation = 'relu' , input_shape = (image_width, image_height, 3)))
        else:
            model.add( Conv2D( layers[i], ( 3, 3 ), activation = 'relu'))
        i += 1
        # if maxpool2d is saved, the accuracy is pretty low in the project, so, in this step, it is skipped
        # model.add( MaxPool2D(2,2) )
    model.add( Flatten() )
    model.add( Dense( 5, activation = 'softmax' ) )
    model.summary()
    model.compile( optimizer = 'adam', loss = 'categorical_crossentropy', metrics = [ 'accuracy',tf.keras.metrics.Precision(), tf.keras.metrics.Recall() ] )
    # after testing several times, epochs = 10 is enough in this step
    history = model.fit( train_generator,  epochs = 10, batch_size = 64,verbose = 0 )

    return history

def plot_result(history, key1, title):
    plt.plot(history.history[key1])
    # list(history.history.keys())[2][:list(history.history.keys())[2].rfind('_')]
    plt.ylabel(str(key1)[:key1.rfind('_')])
    plt.xlabel('Epoch')
    plt.legend(['training data', ], loc='lower right')
    plt.title(title)
    plt.show()


def test_overfitting(path0, layers,image_width, image_height):
    train_generator = get_train_generator(path0,image_width, image_height)
    history = overfitting(train_generator, layers , image_width, image_height)
    plot_result(history, list(history.history.keys())[0], 'Learning Curve Loss')
    plot_result(history, list(history.history.keys())[1], 'Learning Curve Accuracy')
    plot_result(history, list(history.history.keys())[2], 'Learning Curve precision')
    plot_result(history, list(history.history.keys())[3], 'Learning Curve Recall')
    return history
In [ ]:
test_overfitting(path0, [16],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_20"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_22 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
flatten_20 (Flatten)         (None, 1032256)           0         
_________________________________________________________________
dense_36 (Dense)             (None, 5)                 5161285   
=================================================================
Total params: 5,161,733
Trainable params: 5,161,733
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5a08f80210>
In [ ]:
test_overfitting(path0, [16,16],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_21"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_23 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
conv2d_24 (Conv2D)           (None, 252, 252, 16)      2320      
_________________________________________________________________
flatten_21 (Flatten)         (None, 1016064)           0         
_________________________________________________________________
dense_37 (Dense)             (None, 5)                 5080325   
=================================================================
Total params: 5,083,093
Trainable params: 5,083,093
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5abe8ff290>
In [ ]:
test_overfitting(path0, [16,16,16],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_22"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_25 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
conv2d_26 (Conv2D)           (None, 252, 252, 16)      2320      
_________________________________________________________________
conv2d_27 (Conv2D)           (None, 250, 250, 16)      2320      
_________________________________________________________________
flatten_22 (Flatten)         (None, 1000000)           0         
_________________________________________________________________
dense_38 (Dense)             (None, 5)                 5000005   
=================================================================
Total params: 5,005,093
Trainable params: 5,005,093
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5abcb329d0>
In [ ]:
test_overfitting(path0, [16,16,16,16],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_23"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_28 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
conv2d_29 (Conv2D)           (None, 252, 252, 16)      2320      
_________________________________________________________________
conv2d_30 (Conv2D)           (None, 250, 250, 16)      2320      
_________________________________________________________________
conv2d_31 (Conv2D)           (None, 248, 248, 16)      2320      
_________________________________________________________________
flatten_23 (Flatten)         (None, 984064)            0         
_________________________________________________________________
dense_39 (Dense)             (None, 5)                 4920325   
=================================================================
Total params: 4,927,733
Trainable params: 4,927,733
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5abe8e8950>
In [ ]:
test_overfitting(path0, [16,16,16,16,16],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_24"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_32 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
conv2d_33 (Conv2D)           (None, 252, 252, 16)      2320      
_________________________________________________________________
conv2d_34 (Conv2D)           (None, 250, 250, 16)      2320      
_________________________________________________________________
conv2d_35 (Conv2D)           (None, 248, 248, 16)      2320      
_________________________________________________________________
conv2d_36 (Conv2D)           (None, 246, 246, 16)      2320      
_________________________________________________________________
flatten_24 (Flatten)         (None, 968256)            0         
_________________________________________________________________
dense_40 (Dense)             (None, 5)                 4841285   
=================================================================
Total params: 4,851,013
Trainable params: 4,851,013
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5abc816bd0>
In [ ]:
test_overfitting(path0, [16,16,16,16,16,16],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_25"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_37 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
conv2d_38 (Conv2D)           (None, 252, 252, 16)      2320      
_________________________________________________________________
conv2d_39 (Conv2D)           (None, 250, 250, 16)      2320      
_________________________________________________________________
conv2d_40 (Conv2D)           (None, 248, 248, 16)      2320      
_________________________________________________________________
conv2d_41 (Conv2D)           (None, 246, 246, 16)      2320      
_________________________________________________________________
conv2d_42 (Conv2D)           (None, 244, 244, 16)      2320      
_________________________________________________________________
flatten_25 (Flatten)         (None, 952576)            0         
_________________________________________________________________
dense_41 (Dense)             (None, 5)                 4762885   
=================================================================
Total params: 4,774,933
Trainable params: 4,774,933
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5a04222b90>

From the structure above, you can add more layers

In [ ]:
test_overfitting(path0, [32],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_27"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_47 (Conv2D)           (None, 254, 254, 32)      896       
_________________________________________________________________
flatten_27 (Flatten)         (None, 2064512)           0         
_________________________________________________________________
dense_43 (Dense)             (None, 5)                 10322565  
=================================================================
Total params: 10,323,461
Trainable params: 10,323,461
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f597da0f110>
In [ ]:
test_overfitting(path0, [32,32],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_28"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_48 (Conv2D)           (None, 254, 254, 32)      896       
_________________________________________________________________
conv2d_49 (Conv2D)           (None, 252, 252, 32)      9248      
_________________________________________________________________
flatten_28 (Flatten)         (None, 2032128)           0         
_________________________________________________________________
dense_44 (Dense)             (None, 5)                 10160645  
=================================================================
Total params: 10,170,789
Trainable params: 10,170,789
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f597e2d2b50>
In [ ]:
test_overfitting(path0, [32,32,32],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_29"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_50 (Conv2D)           (None, 254, 254, 32)      896       
_________________________________________________________________
conv2d_51 (Conv2D)           (None, 252, 252, 32)      9248      
_________________________________________________________________
conv2d_52 (Conv2D)           (None, 250, 250, 32)      9248      
_________________________________________________________________
flatten_29 (Flatten)         (None, 2000000)           0         
_________________________________________________________________
dense_45 (Dense)             (None, 5)                 10000005  
=================================================================
Total params: 10,019,397
Trainable params: 10,019,397
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5abc899a10>
In [ ]:
test_overfitting(path0, [64],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_30"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_53 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
flatten_30 (Flatten)         (None, 4129024)           0         
_________________________________________________________________
dense_46 (Dense)             (None, 5)                 20645125  
=================================================================
Total params: 20,646,917
Trainable params: 20,646,917
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f597ced9a50>
In [ ]:
test_overfitting(path0, [64,64],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_31"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_54 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
conv2d_55 (Conv2D)           (None, 252, 252, 64)      36928     
_________________________________________________________________
flatten_31 (Flatten)         (None, 4064256)           0         
_________________________________________________________________
dense_47 (Dense)             (None, 5)                 20321285  
=================================================================
Total params: 20,360,005
Trainable params: 20,360,005
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f5a0930f790>
In [ ]:
test_overfitting(path0, [64,64,64],image_width, image_height)
Found 3176 images belonging to 5 classes.
Model: "sequential_32"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_56 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
conv2d_57 (Conv2D)           (None, 252, 252, 64)      36928     
_________________________________________________________________
conv2d_58 (Conv2D)           (None, 250, 250, 64)      36928     
_________________________________________________________________
flatten_32 (Flatten)         (None, 4000000)           0         
_________________________________________________________________
dense_48 (Dense)             (None, 5)                 20000005  
=================================================================
Total params: 20,075,653
Trainable params: 20,075,653
Non-trainable params: 0
_________________________________________________________________
Out[ ]:
<tensorflow.python.keras.callbacks.History at 0x7f597cdab250>
In [ ]:

From examples above, their accuracy reaches the almost 1, not matter which one to use.

In [ ]:

1
In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

#Phase III. Split and evaluate on test set

In [ ]:

In [ ]:
# this part is used to split images into training, valid and test datasets, it only show the result here since each
# time, random will generate different values
import random
files = os.listdir(path+'/train')
fileamount = []
for directoryName in files:
    # directories.append(directoryName)
    temp = path+'/train/'+directoryName
    fileamount.append(len(os.listdir(temp)))
print(fileamount)
print(sum(fileamount))
dirlist = ['cl','gr','gs','h','p']
for l in range(len(fileamount)):
    i = 0
    randNum = int(fileamount[l] * 0.3)
    print(randNum)
    fileIndex  = sorted(random.sample(range(fileamount[l]), randNum))
    print(fileIndex)
    f = open(str(dirlist[l]+".txt"), "w")
    for index in fileIndex:
        f.write(str(index)+"\n")
    f.close()
[550, 773, 614, 770, 469]
3176
165
[4, 6, 8, 11, 14, 18, 20, 22, 26, 28, 29, 31, 32, 33, 37, 38, 40, 41, 44, 46, 49, 52, 53, 55, 58, 60, 62, 64, 65, 68, 69, 77, 78, 79, 81, 84, 85, 87, 91, 92, 94, 99, 100, 101, 103, 104, 106, 112, 118, 119, 121, 123, 125, 127, 132, 139, 150, 152, 156, 159, 164, 168, 169, 176, 178, 184, 190, 196, 197, 202, 204, 211, 222, 229, 233, 234, 236, 241, 243, 250, 254, 256, 260, 263, 267, 271, 275, 278, 281, 285, 289, 290, 293, 301, 302, 303, 306, 312, 315, 316, 319, 321, 330, 333, 340, 341, 344, 349, 350, 352, 353, 363, 365, 370, 371, 376, 377, 378, 379, 385, 391, 393, 394, 395, 396, 397, 408, 410, 412, 415, 417, 418, 423, 425, 426, 430, 432, 433, 443, 446, 449, 454, 456, 457, 461, 463, 467, 473, 483, 488, 490, 491, 503, 505, 510, 517, 521, 523, 524, 529, 534, 535, 541, 547, 548]
231
[2, 6, 7, 9, 13, 15, 16, 19, 22, 25, 37, 38, 41, 44, 54, 57, 60, 63, 67, 68, 70, 77, 78, 84, 96, 98, 103, 105, 106, 108, 115, 117, 120, 121, 122, 123, 125, 127, 128, 130, 131, 133, 137, 139, 146, 150, 156, 157, 160, 161, 163, 164, 166, 169, 173, 177, 182, 197, 201, 209, 214, 217, 220, 229, 230, 236, 242, 248, 252, 253, 255, 256, 259, 260, 261, 263, 266, 271, 275, 276, 279, 285, 286, 290, 291, 296, 298, 302, 305, 307, 313, 315, 316, 317, 318, 321, 326, 332, 334, 337, 338, 342, 345, 351, 358, 360, 363, 368, 370, 373, 375, 376, 378, 382, 385, 387, 390, 391, 394, 398, 405, 407, 415, 417, 418, 419, 424, 425, 427, 428, 430, 432, 437, 440, 444, 445, 447, 454, 456, 461, 462, 464, 467, 468, 470, 474, 476, 477, 479, 481, 483, 488, 491, 493, 496, 509, 511, 513, 516, 519, 527, 540, 541, 543, 544, 545, 546, 553, 555, 573, 578, 584, 590, 595, 598, 600, 604, 606, 611, 617, 618, 634, 640, 645, 646, 654, 659, 660, 662, 666, 668, 670, 675, 676, 677, 682, 683, 684, 686, 689, 691, 692, 694, 696, 698, 701, 702, 704, 705, 707, 709, 710, 711, 715, 720, 723, 724, 727, 729, 730, 732, 736, 738, 740, 743, 747, 748, 751, 764, 767, 770]
184
[0, 4, 6, 10, 11, 18, 19, 20, 24, 27, 28, 29, 31, 32, 33, 34, 35, 37, 39, 41, 43, 44, 46, 47, 50, 51, 53, 58, 59, 60, 69, 73, 74, 78, 83, 88, 90, 92, 98, 102, 105, 108, 110, 113, 116, 117, 119, 121, 128, 133, 141, 144, 145, 152, 158, 159, 160, 171, 173, 174, 175, 177, 186, 187, 192, 197, 202, 203, 205, 206, 207, 212, 215, 220, 221, 232, 233, 239, 242, 245, 246, 247, 249, 252, 253, 261, 262, 264, 265, 268, 271, 274, 277, 281, 293, 294, 295, 296, 297, 298, 301, 307, 308, 309, 310, 312, 317, 320, 323, 327, 328, 332, 338, 341, 346, 357, 361, 366, 370, 373, 375, 377, 379, 380, 381, 394, 396, 397, 400, 401, 404, 405, 406, 409, 411, 412, 421, 424, 429, 430, 431, 432, 433, 434, 435, 444, 446, 457, 459, 461, 465, 467, 471, 473, 478, 491, 497, 501, 502, 510, 511, 512, 513, 514, 521, 525, 529, 532, 537, 540, 543, 546, 551, 560, 562, 563, 577, 581, 588, 595, 600, 605, 611, 613]
231
[2, 3, 4, 6, 13, 19, 25, 26, 33, 36, 38, 40, 44, 46, 49, 50, 52, 53, 55, 57, 60, 68, 69, 71, 72, 73, 80, 83, 87, 89, 93, 94, 96, 97, 98, 100, 101, 104, 105, 115, 118, 119, 124, 127, 128, 129, 130, 135, 137, 139, 143, 144, 151, 152, 153, 161, 165, 182, 185, 186, 192, 195, 197, 202, 204, 206, 209, 211, 212, 214, 215, 224, 229, 230, 231, 232, 233, 235, 239, 240, 241, 246, 247, 248, 249, 251, 252, 257, 261, 263, 266, 268, 272, 274, 278, 280, 289, 295, 302, 305, 306, 308, 318, 321, 322, 325, 326, 327, 331, 333, 336, 337, 338, 357, 363, 364, 367, 369, 371, 379, 380, 383, 384, 386, 388, 393, 395, 406, 407, 423, 429, 430, 431, 433, 434, 437, 441, 445, 446, 450, 472, 473, 476, 481, 483, 484, 486, 490, 492, 496, 497, 499, 500, 502, 503, 504, 509, 519, 527, 531, 535, 538, 539, 543, 550, 558, 559, 564, 566, 572, 574, 577, 579, 584, 585, 587, 590, 591, 592, 594, 596, 597, 609, 611, 614, 618, 620, 622, 624, 625, 626, 627, 629, 632, 637, 638, 641, 647, 650, 652, 658, 660, 667, 670, 673, 680, 681, 688, 690, 694, 696, 706, 707, 712, 713, 716, 718, 726, 727, 728, 733, 740, 741, 743, 745, 747, 752, 756, 759, 764, 769]
140
[4, 5, 10, 12, 21, 22, 28, 29, 33, 34, 36, 40, 41, 47, 48, 51, 57, 58, 63, 64, 67, 72, 74, 76, 80, 84, 85, 88, 93, 97, 98, 100, 110, 111, 112, 117, 121, 132, 133, 141, 142, 146, 149, 153, 161, 164, 176, 182, 193, 195, 196, 199, 202, 204, 205, 213, 214, 215, 218, 222, 224, 225, 226, 231, 233, 234, 235, 236, 237, 241, 242, 243, 248, 250, 252, 254, 258, 259, 261, 262, 263, 275, 279, 280, 281, 285, 286, 289, 293, 296, 297, 311, 318, 323, 325, 329, 331, 332, 336, 337, 340, 344, 346, 347, 349, 352, 353, 354, 356, 357, 358, 366, 367, 371, 375, 378, 379, 382, 383, 391, 395, 396, 398, 406, 408, 412, 413, 414, 422, 423, 425, 428, 429, 434, 436, 439, 442, 459, 460, 468]
In [ ]:
i = 0
print(path)
print(len(validFiles))
dirlist = ['cl','gr','gs','h','p']
for dir in dirlist:
    print(validFiles[i])
    print(testFiles[i])
    for file in validFiles[i]:
        shutil.move(path+'/train/'+dir+'/'+file, path+'/valid/'+dir+'/'+file)
    for file in testFiles[i]:
        shutil.move(path+'/train/'+dir+'/'+file, path+'/test/'+dir+'/'+file)
    
    i = i + 1
# by now, the files have been split into train, valid and test
/content/drive/My Drive/DL/DOG
5
['image (2).jpeg', 'image.jpeg', 'image (17).jpeg', 'images (32).jpeg', 'images (4).jpeg', 'images (54).jpeg', 'images (55).jpeg', 'images (40).jpeg', 'images (12).jpeg', 'images (38).jpeg', 'image (19).jpeg', 'images (8).jpeg', 'images (13).jpeg', 'images (48).jpeg', 'images (22).jpeg', 'images (20).jpeg', 'images (3).jpeg', 'image (9).jpeg', 'images (15).jpeg', 'image (16).jpeg', 'image (10).jpeg', 'images (41).jpeg', 'images (19).jpeg', 'images (50).jpeg', 'image (14).jpeg', 'image (4).jpeg', 'images (46).jpeg', 'image (18).jpeg', 'images (16).jpeg', 'image (1).jpeg', 'images (5).jpeg', 'images (503).jpeg', 'images (123).jpeg', 'images (338).jpeg', 'images (354).jpeg', 'images (165).jpeg', 'images (300).jpeg', 'images (68).jpeg', 'images (138).jpeg', 'images (162).jpeg', 'images (112).jpeg', 'images (228).jpeg', 'images (113).jpeg', 'images (109).jpeg', 'images (84).jpeg', 'images (318).jpeg', 'images (455).jpeg', 'images (124).jpeg', 'images (227).jpeg', 'images (131).jpeg', 'images (342).jpeg', 'images (489).jpeg', 'images (184).jpeg', 'images (143).jpeg', 'images (284).jpeg', 'images (451).jpeg', 'images (573).jpeg', 'images (531).jpeg', 'images (554).jpeg', 'images (230).jpeg', 'images (133).jpeg', 'images (423).jpeg', 'images (466).jpeg', 'images (74).jpeg', 'images (173).jpeg', 'images (370).jpeg', 'images (426).jpeg', 'images (400).jpeg', 'images (236).jpeg', 'images (417).jpeg', 'images (161).jpeg', 'images (294).jpeg', 'images (275).jpeg', 'images (267).jpeg', 'images (287).jpeg', 'images (471).jpeg', 'images (555).jpeg', 'images (514).jpeg', 'images (88).jpeg', 'images (114).jpeg', 'images (445).jpeg', 'images (176).jpeg', 'images (398).jpeg', 'images (169).jpeg', 'images (170).jpeg', 'images (343).jpeg', 'images (238).jpeg', 'images (280).jpeg', 'images (564).jpeg', 'images (443).jpeg', 'images (353).jpeg', 'images (340).jpeg', 'images (218).jpeg', 'images (576).jpeg', 'images (282).jpeg', 'images (397).jpeg', 'images (373).jpeg', 'images (87).jpeg', 'images (375).jpeg', 'images (444).jpeg', 'images (200).jpeg', 'images (249).jpeg', 'images (559).jpeg', 'images (72).jpeg', 'images (64).jpeg', 'images (508).jpeg', 'images (141).jpeg', 'images (278).jpeg', 'images (127).jpeg', 'images (246).jpeg', 'images (422).jpeg', 'images (137).jpeg', 'images (431).jpeg', 'images (350).jpeg', 'images (534).jpeg']
['images (211).jpeg', 'images (207).jpeg', 'images (150).jpeg', 'images (96).jpeg', 'images (299).jpeg', 'images (179).jpeg', 'images (578).jpeg', 'images (202).jpeg', 'images (572).jpeg', 'images (94).jpeg', 'images (217).jpeg', 'images (89).jpeg', 'images (91).jpeg', 'images (297).jpeg', 'images (274).jpeg', 'images (563).jpeg', 'images (62).jpeg', 'images (542).jpeg', 'images (212).jpeg', 'images (591).jpeg', 'images (570).jpeg', 'images (139).jpeg', 'images (447).jpeg', 'images (220).jpeg', 'images (120).jpeg', 'images (189).jpeg', 'images (436).jpeg', 'images (364).jpeg', 'images (86).jpeg', 'images (265).jpeg', 'images (533).jpeg', 'images (101).jpeg', 'images (566).jpeg', 'images (334).jpeg', 'images (477).jpeg', 'images (435).jpeg', 'images (188).jpeg', 'images (303).jpeg', 'images (581).jpeg', 'images (356).jpeg', 'images (395).jpeg', 'images (76).jpeg', 'images (171).jpeg', 'images (258).jpeg', 'images (522).jpeg', 'images (456).jpeg', 'images (136).jpeg', 'images (191).jpeg', 'images (295).jpeg', 'images (378).jpeg']
['Golden_Retriever_Carlos_-10581910556-.jpg', 'Golden-Retriever-Health-And-Care.jpg', 'Golden-Retriever_Square.jpg', 'golden-retriever (1).jpg', 'golden-retriever-in-field-of-flowers.jpg', 'golden-retriever-puppy (1).jpg', '1_jay-molvie-golden.jpg', 'golden_retriever_skin_issues.jpg', '002109_1.jpg', 'golden-retriever.jpg', 'dog-1994692_1920.jpg', '5f69c81757b7da001ee12fca.jpeg', 'golden-retriever-1-750x532.jpg', 'golden-retriever (3).jpg', 'images (624).jpeg', 'images (381).jpeg', 'image (30).jpeg', 'images (232).jpeg', 'image (13).jpeg', 'image (2).jpeg', 'images (582).jpeg', 'images (157).jpeg', 'images (231).jpeg', 'images (614).jpeg', 'goldenretrieversf1.jpg', 'images (524).jpeg', 'images (639).jpeg', 'images (668).jpeg', 'images (393).jpeg', 'images (30).jpeg', 'images (394).jpeg', 'images (138).jpeg', 'images (364).jpeg', 'images (357).jpeg', 'images (443).jpeg', 'images (621).jpeg', 'images (311).jpeg', 'images (392).jpeg', 'images (514).jpeg', 'images (250).jpeg', 'images (436).jpeg', 'images (683).jpeg', 'images (585).jpeg', 'images (557).jpeg', 'images (195).jpeg', 'images (224).jpeg', 'images (371).jpeg', 'images (678).jpeg', 'image (24).jpeg', 'unnamed.jpg', 'images (404).jpeg', 'images (191).jpeg', 'images (692).jpeg', 'images (497).jpeg', 'images (76).jpeg', 'images (622).jpeg', 'images (13).jpeg', 'images (62).jpeg', 'images (263).jpeg', 'images (61).jpeg', 'images (591).jpeg', 'images (592).jpeg', 'images (164).jpeg', 'images (81).jpeg', 'images (98).jpeg', 'images (130).jpeg', 'images (439).jpeg', 'images (78).jpeg', 'images (18).jpeg', 'images (135).jpeg', 'images (307).jpeg', 'images (627).jpeg', 'images (95).jpeg', 'images (464).jpeg', 'images (529).jpeg', 'images (119).jpeg', 'images (272).jpeg', 'pixfromsylvia.jpg', 'images (202).jpeg', 'images (268).jpeg', 'images (599).jpeg', 'types-golden-retrievers.jpg', 'images (212).jpeg', 'image (22).jpeg', 'images.jpeg', 'images (628).jpeg', 'images (636).jpeg', 'images (566).jpeg', 'images (688).jpeg', 'images (59).jpeg', 'images (644).jpeg', 'images (171).jpeg', 'images (186).jpeg', 'images (238).jpeg', 'images (510).jpeg', 'images (114).jpeg', 'how-long-do-golden-retrievers-live-KH-long.jpg', 'images (241).jpeg', 'images (99).jpeg', 'images (414).jpeg', 'images (42).jpeg', 'images (584).jpeg', 'images (120).jpeg', 'images (410).jpeg', 'images (386).jpeg', 'images (576).jpeg', 'images (385).jpeg', 'images (297).jpeg', 'images (519).jpeg', 'images (631).jpeg', 'images (540).jpeg', 'what-kind-health-problems-do-golden-retrievers-have.jpg', 'images (645).jpeg', 'images (377).jpeg', 'images (221).jpeg', 'images (593).jpeg', 'images (646).jpeg', 'images (190).jpeg', 'images (218).jpeg', 'images (303).jpeg', 'images (108).jpeg', 'images (459).jpeg', 'images (275).jpeg', 'images (647).jpeg', 'images (269).jpeg', 'images (446).jpeg', 'images (384).jpeg', 'images (530).jpeg', 'images (298).jpeg', 'images (421).jpeg', 'images (461).jpeg', 'images (160).jpeg', 'images (422).jpeg', 'photos-golden-retriever-puppies.jpg', 'Screen-Shot-2020-06-04-at-4-05-05-PM.png', 'images (55).jpeg', 'images (571).jpeg', 'images (413).jpeg', 'images (603).jpeg', 'images (433).jpeg', 'images (318).jpeg', 'images (663).jpeg', 'images (128).jpeg', 'images (515).jpeg', 'images (326).jpeg', 'image (19).jpeg', 'images (655).jpeg', 'images (419).jpeg', 'images (255).jpeg', 'images (313).jpeg', 'images (281).jpeg', 'images (173).jpeg', 'images (618).jpeg', 'images (535).jpeg', 'images (680).jpeg', 'images (237).jpeg', 'images (290).jpeg', 'Lucky5.jpg', 'images (632).jpeg', 'images (67).jpeg', 'images (483).jpeg']
['images (551).jpeg', 'images (159).jpeg', 'images (235).jpeg', 'images (435).jpeg', 'images (642).jpeg', 'images (457).jpeg', 'images (300).jpeg', 'images (699).jpeg', 'images (82).jpeg', 'images (213).jpeg', 'images (38).jpeg', 'tmp_7VYPfN_0a1b7c56b554b3b9_GettyImages-85597067.jpg', 'images (165).jpeg', 'images (467).jpeg', 'images (49).jpeg', 'images (309).jpeg', 'images (379).jpeg', 'images (323).jpeg', 'images (358).jpeg', 'images (155).jpeg', 'images (254).jpeg', 'images (579).jpeg', 'images (575).jpeg', 'images (401).jpeg', 'images (266).jpeg', 'images (207).jpeg', 'images (671).jpeg', 'images (273).jpeg', 'images (72).jpeg', 'images (504).jpeg', 'images (572).jpeg', 'images (89).jpeg', 'image (10).jpeg', 'images (648).jpeg', 'images (547).jpeg', 'images (102).jpeg', 'images (625).jpeg', 'images (220).jpeg', 'images (33).jpeg', 'images (22).jpeg', 'images (400).jpeg', 'images (602).jpeg', 'images (60).jpeg', 'images (573).jpeg', 'images (525).jpeg', 'images (118).jpeg', 'images (449).jpeg', 'images (509).jpeg', 'golden-retrievers-scotland-facebook.png', 'images (258).jpeg', 'images (116).jpeg', 'images (168).jpeg', 'images (380).jpeg', 'images (261).jpeg', 'images (403).jpeg', 'unnamed (1).jpg', 'oldest-golden-retriever-1593191827.jpg', 'images (480).jpeg', 'images (634).jpeg', 'images (111).jpeg', 'images (182).jpeg', 'images (651).jpeg', 'images (9).jpeg', 'images (578).jpeg', 'images (617).jpeg', 'images (330).jpeg', 'images (295).jpeg', 'images (32).jpeg', 'images (388).jpeg', 'images (216).jpeg']
['images (543).jpeg', 'images (353).jpeg', 'images (394).jpeg', 'images (585).jpeg', 'images (416).jpeg', 'images (185).jpeg', 'images (465).jpeg', 'images (557).jpeg', 'images (331).jpeg', 'images (414).jpeg', 'images (219).jpeg', 'images (517).jpeg', 'image (25).jpeg', 'images (120).jpeg', 'images (556).jpeg', 'images (45).jpeg', 'images (165).jpeg', 'images (408).jpeg', 'images (326).jpeg', 'images (275).jpeg', 'images (54).jpeg', 'images (281).jpeg', 'images (264).jpeg', 'images (195).jpeg', 'images (356).jpeg', 'images (157).jpeg', 'images (466).jpeg', 'image (7).jpeg', 'images (605).jpeg', 'images (581).jpeg', 'images (32).jpeg', 'images (485).jpeg', 'images (41).jpeg', 'images (602).jpeg', 'images (3).jpeg', 'images (460).jpeg', 'images (463).jpeg', 'images (52).jpeg', 'images (82).jpeg', 'images (263).jpeg', 'images (309).jpeg', 'images (84).jpeg', 'images (7).jpeg', 'image (4).jpeg', 'images (306).jpeg', 'image (28).jpeg', 'images (292).jpeg', 'images (86).jpeg', 'images (106).jpeg', 'images (270).jpeg', 'images (39).jpeg', 'images (212).jpeg', 'images (526).jpeg', 'images (407).jpeg', 'images (122).jpeg', 'images (554).jpeg', 'images (192).jpeg', 'images (478).jpeg', 'images (152).jpeg', 'images (335).jpeg', 'images (259).jpeg', 'images (519).jpeg', 'images (409).jpeg', 'image (23).jpeg', 'images (398).jpeg', 'images (6).jpeg', 'images (513).jpeg', 'images (473).jpeg', 'images (203).jpeg', 'images (429).jpeg', 'images (590).jpeg', 'images (299).jpeg', 'images (291).jpeg', 'images (243).jpeg', 'image (13).jpeg', 'images (23).jpeg', 'images (500).jpeg', 'images (343).jpeg', 'images (482).jpeg', 'images (483).jpeg', 'images (16).jpeg', 'images (334).jpeg', 'images (587).jpeg', 'images (48).jpeg', 'images (596).jpeg', 'images (199).jpeg', 'images (354).jpeg', 'images (158).jpeg', 'images (475).jpeg', 'images (413).jpeg', 'images (260).jpeg', 'images (533).jpeg', 'images (607).jpeg', 'images (130).jpeg', 'images (205).jpeg', 'images (492).jpeg', 'images (248).jpeg', 'images (508).jpeg', 'images (434).jpeg', 'images (420).jpeg', 'images (168).jpeg', 'images (119).jpeg', 'images (544).jpeg', 'images (382).jpeg', 'images (357).jpeg', 'images (80).jpeg', 'images (509).jpeg', 'images (239).jpeg', 'images (140).jpeg', 'images (230).jpeg', 'images (77).jpeg', 'images (9).jpeg', 'images (337).jpeg', 'images (246).jpeg', 'images (297).jpeg', 'images (220).jpeg', 'images (417).jpeg', 'images (186).jpeg', 'images (224).jpeg', 'images (323).jpeg', 'images (146).jpeg', 'images (332).jpeg', 'images (565).jpeg', 'images (377).jpeg', 'images (385).jpeg', 'image (22).jpeg', 'images (271).jpeg', 'images (567).jpeg']
['image (15).jpeg', 'images (214).jpeg', 'images (4).jpeg', 'images (594).jpeg', 'images (269).jpeg', 'images (523).jpeg', 'images (253).jpeg', 'images (286).jpeg', 'images (65).jpeg', 'images (424).jpeg', 'images (144).jpeg', 'images (474).jpeg', 'images (76).jpeg', 'images (612).jpeg', 'images (464).jpeg', 'images (179).jpeg', 'images (105).jpeg', 'image (6).jpeg', 'images (139).jpeg', 'images (236).jpeg', 'images (265).jpeg', 'images (566).jpeg', 'images (451).jpeg', 'images (504).jpeg', 'images (33).jpeg', 'images (362).jpeg', 'images (378).jpeg', 'images (342).jpeg', 'images (410).jpeg', 'images (535).jpeg', 'images (30).jpeg', 'images (449).jpeg', 'images (98).jpeg', 'images (527).jpeg', 'images (176).jpeg', 'images (277).jpeg', 'images (311).jpeg', 'images (200).jpeg', 'images (536).jpeg', 'images (93).jpeg', 'images (289).jpeg', 'images (89).jpeg', 'images (79).jpeg', 'image (12).jpeg', 'images (462).jpeg', 'images (17).jpeg', 'images (194).jpeg', 'image (17).jpeg', 'images (341).jpeg', 'images (114).jpeg', 'images (167).jpeg', 'images (159).jpeg', 'images (496).jpeg', 'images (128).jpeg', 'images (529).jpeg', 'images (87).jpeg']
['118922819-siberian-husky-dogs-two-beautiful-siberian-huskies.jpg', 'dbcd665586b86359ba113cdbb3.jpg', 'Husky-white2.jpg', 'hypatia-h_0388aa0f152530504dd3310a0f18c291-h_ffdee1bce4275fd.jpg', 'image (10).jpeg', 'husky.png', 'huskyforbreedofthemonth.jpg', 'Husky_Growth_Chart.jpg', 'image (13).jpeg', 'GettyImages-1277712812-e1610050216174.jpg', 'image (2).jpeg', '5a316620ec1ade73284a9998.png', 'Black-Magic-Big-Boy.jpg', 'greenland-dogs-lead.jpg', '220px-DOG-HUSKY_23JUL00.jpg', 'andriyko-podilnyk-M4NYOsSre6g-unsplash.jpg', 'DogWatch-Blog-Featured-Image-Husky.png', 'image (7).jpeg', 'husky2.jpg', '71379863_m-1024x683.jpg', 'images (580).jpeg', 'images (604).jpeg', 'images (54).jpeg', 'images (481).jpeg', 'images (600).jpeg', 'images (136).jpeg', 'images (111).jpeg', 'images (403).jpeg', 'images (244).jpeg', 'images (18).jpeg', 'images (459).jpeg', 'images (646).jpeg', 'images (452).jpeg', 'images (635).jpeg', 'images (400).jpeg', 'images (206).jpeg', 'images (495).jpeg', 'images (407).jpeg', 'images (690).jpeg', 'images (6).jpeg', 'images (360).jpeg', 'siberian-husky-card-small.jpg', 'Red-Husky-Feature.jpg', 'images (106).jpeg', 'images (482).jpeg', 'images (653).jpeg', 'images (131).jpeg', 'images (141).jpeg', 'images (36).jpeg', 'images (465).jpeg', 'white-and-black-siberian-husky-2853129.jpg', 'imagedogstwo-siberian-huskies-different-colorsblog.jpg', 'images (43).jpeg', 'image-1.jpg', 'images (487).jpeg', 'images (662).jpeg', 'images (652).jpeg', 'image (15).jpeg', 'images (480).jpeg', 'images (466).jpeg', 'images (519).jpeg', 'Screen-Shot-2019-12-02-at-12-01-13-PM.png', 'images (253).jpeg', 'images (251).jpeg', 'images (555).jpeg', 'images (645).jpeg', 'images (182).jpeg', 'images (479).jpeg', 'Siberian-husky.jpg', 'images (494).jpeg', 'images (164).jpeg', 'images (64).jpeg', 'images (59).jpeg', 'images (28).jpeg', 'images (72).jpeg', 'images (665).jpeg', 'images (441).jpeg', 'images (450).jpeg', 'images (157).jpeg', 'images (601).jpeg', 'images (620).jpeg', 'images (68).jpeg', 'images (461).jpeg', 'images (1).jpeg', 'images (440).jpeg', 'images (34).jpeg', 'images (45).jpeg', 'images (682).jpeg', 'thousands-of-years-of-the-siberian-husky.jpg', 'images (593).jpeg', 'images (617).jpeg', 'images (632).jpeg', 'images (570).jpeg', 'images (242).jpeg', 'images (402).jpeg', 'Siberian-Husky2-1330x711.jpg', 'images (347).jpeg', 'images (117).jpeg', 'images (463).jpeg', 'images (543).jpeg', 'images (346).jpeg', 'images (538).jpeg', 'images (554).jpeg', 'images (696).jpeg', 'WORKING_Siberian-Husky.jpg', 'turtle_orig.jpg', 'images (174).jpeg', 'SiberianHuskyPurebredDogAce2YearsOld.jpg', 'images (462).jpeg', 'images (308).jpeg', 'images (524).jpeg', 'images (568).jpeg', 'images (247).jpeg', 'images (583).jpeg', 'images (187).jpeg', 'images (598).jpeg', 'images (312).jpeg', 'nbc_dogs_working_siberianhusky_201116.jpg', 'images (107).jpeg', 'images (105).jpeg', 'images (119).jpeg', 'images (362).jpeg', 'images (546).jpeg', 'images (558).jpeg', 'images (198).jpeg', 'image (23).jpeg', 'images (445).jpeg', 'images (474).jpeg', 'images (526).jpeg', 'images (683).jpeg', 'images (197).jpeg', 'images (473).jpeg', 'images (640).jpeg', 'images (77).jpeg', 'images (177).jpeg', 'image.jpeg', 'images (205).jpeg', 'images (404).jpeg', 'images (145).jpeg', 'images (169).jpeg', 'images (680).jpeg', 'images (576).jpeg', 'images (175).jpeg', 'images (397).jpeg', 'images (375).jpeg', 'images (99).jpeg', 'images (672).jpeg', 'images (534).jpeg', 'images (537).jpeg', 'images (422).jpeg', 'images (158).jpeg', 'images (190).jpeg', 'images (97).jpeg', 'images (108).jpeg', 'images (273).jpeg', 'images (152).jpeg', 'images (485).jpeg', 'images (648).jpeg', 'images (401).jpeg', 'images (505).jpeg', 'images (511).jpeg']
['images (412).jpeg', 'images (219).jpeg', 'images (257).jpeg', 'images (688).jpeg', 'images (571).jpeg', 'image (26).jpeg', 'images (235).jpeg', 'images (192).jpeg', 'images (350).jpeg', 'images (678).jpeg', 'images (659).jpeg', 'images (687).jpeg', 'images (541).jpeg', 'image (17).jpeg', 'images (139).jpeg', 'images (376).jpeg', 'images (378).jpeg', 'images (113).jpeg', 'images (471).jpeg', 'images (332).jpeg', 'images (573).jpeg', 'images (557).jpeg', 'images (265).jpeg', 'images (527).jpeg', 'images (609).jpeg', 'images (542).jpeg', 'images (643).jpeg', 'images (38).jpeg', 'images (329).jpeg', 'images (272).jpeg', 'images (351).jpeg', 'images (201).jpeg', 'images (95).jpeg', 'Image18_593943d4eac89.jpg', 'images (248).jpeg', 'images (469).jpeg', 'images (277).jpeg', 'images (116).jpeg', 'images (92).jpeg', 'images (396).jpeg', 'images (599).jpeg', 'siberian-husky-1.jpg', 'images (275).jpeg', 'images (638).jpeg', 'images (545).jpeg', 'images (321).jpeg', 'images (195).jpeg', 'images (395).jpeg', 'images (91).jpeg', 'images (227).jpeg', 'images (90).jpeg', 'image (27).jpeg', 'images (288).jpeg', 'images (675).jpeg', 'images (340).jpeg', 'images (550).jpeg', 'images (196).jpeg', 'images (679).jpeg', 'images (490).jpeg', 'images (470).jpeg', 'images (686).jpeg', 'images (417).jpeg', 'images (513).jpeg', 'images (180).jpeg', 'images (591).jpeg', 'images (261).jpeg', 'Malamute.jpg', 'images (151).jpeg', 'images (3).jpeg', 'images (282).jpeg']
['images (225).jpeg', 'images (228).jpeg', 'images (221).jpeg', 'images (448).jpeg', 'images (30).jpeg', 'images (336).jpeg', 'images (219).jpeg', 'images (405).jpeg', 'images (277).jpeg', 'images (265).jpeg', 'images (48).jpeg', 'images (287).jpeg', 'images (78).jpeg', 'images (18).jpeg', 'images (372).jpeg', 'images (38).jpeg', 'images (382).jpeg', 'images (394).jpeg', 'images (421).jpeg', 'images (272).jpeg', 'images (449).jpeg', 'images (145).jpeg', 'images (116).jpeg', 'images (373).jpeg', 'images (149).jpeg', 'images (426).jpeg', 'images (284).jpeg', 'images (258).jpeg', 'images (102).jpeg', 'images.jpeg', 'images (186).jpeg', 'images (350).jpeg', 'images (435).jpeg', 'images (318).jpeg', 'images (289).jpeg', 'images (378).jpeg', 'images (197).jpeg', 'images (15).jpeg', 'images (84).jpeg', 'images (120).jpeg', 'images (268).jpeg', 'images (114).jpeg', 'images (108).jpeg', 'images (237).jpeg', 'images (222).jpeg', 'images (136).jpeg', 'images (188).jpeg', 'images (452).jpeg', 'images (61).jpeg', 'images (314).jpeg', 'images (390).jpeg', 'images (441).jpeg', 'images (413).jpeg', 'images (73).jpeg', 'images (299).jpeg', 'images (157).jpeg', 'images (150).jpeg', 'images (161).jpeg', 'images (76).jpeg', 'images (386).jpeg', 'images (122).jpeg', 'images (311).jpeg', 'images (59).jpeg', 'images (167).jpeg', 'images (359).jpeg', 'images (290).jpeg', 'images (367).jpeg', 'images (342).jpeg', 'images (346).jpeg', 'images (280).jpeg', 'images (401).jpeg', 'images (320).jpeg', 'images (131).jpeg', 'images (187).jpeg', 'images (121).jpeg', 'images (344).jpeg', 'images (173).jpeg', 'images (306).jpeg', 'images (85).jpeg', 'images (263).jpeg', 'images (109).jpeg', 'images (457).jpeg', 'images (396).jpeg', 'images (357).jpeg', 'images (91).jpeg', 'images (56).jpeg', 'images (402).jpeg', 'images (302).jpeg', 'images (115).jpeg', 'images (14).jpeg', 'images (196).jpeg', 'images (275).jpeg', 'images (36).jpeg', 'images (241).jpeg', 'images (234).jpeg', 'images (62).jpeg', 'images (292).jpeg', 'images (208).jpeg']
['images (11).jpeg', 'images (94).jpeg', 'images (66).jpeg', 'images (370).jpeg', 'images (17).jpeg', 'images (329).jpeg', 'images (218).jpeg', 'images (385).jpeg', 'images (392).jpeg', 'images (164).jpeg', 'images (387).jpeg', 'images (112).jpeg', 'images (363).jpeg', 'images (82).jpeg', 'images (431).jpeg', 'images (250).jpeg', 'images (52).jpeg', 'images (79).jpeg', 'images (86).jpeg', 'images (179).jpeg', 'images (433).jpeg', 'images (419).jpeg', 'images (209).jpeg', 'images (422).jpeg', 'images (398).jpeg', 'images (412).jpeg', 'images (201).jpeg', 'images (389).jpeg', 'images (42).jpeg', 'images (406).jpeg', 'images (50).jpeg', 'images (43).jpeg', 'images (345).jpeg', 'image (10).jpeg', 'image (30).jpeg', 'images (4).jpeg', 'images (2).png', 'image (20).jpeg', 'image (4).jpeg', 'image (23).jpeg', 'image (5).jpeg', 'images (4).png']
In [ ]:
# get train, valid and test generators
def get_all_generators(path, image_width, image_height):
    my_generator = ImageDataGenerator(rescale=1./255)
    train_generator = my_generator.flow_from_directory( path+'/train/', target_size=(image_width, image_height), batch_size=32, class_mode='categorical')
    valid_generator = my_generator.flow_from_directory( path+'/valid/', target_size=(image_width, image_height), batch_size=32, class_mode='categorical')
    test_generator = my_generator.flow_from_directory( path+'/test/', target_size=(image_width, image_height), batch_size=32, class_mode='categorical')

    return train_generator, valid_generator, test_generator

# overfitting the model with early stop
def overfitting_early_stop(train_generator, valid_generator, test_generator, layers,image_width, image_height):
    early_stopping = EarlyStopping(monitor='val_accuracy', patience=8, min_delta=0.001, mode='max')
    model = Sequential()
    j = 0
    for i in range(len(layers)):
        if i == 0:
            model.add( Conv2D( layers[i], ( 3, 3 ), activation = 'relu' , input_shape = (image_width, image_height, 3)))
        else:
            model.add( Conv2D( layers[i], ( 3, 3 ), activation = 'relu'))
        i += 1
        model.add( MaxPool2D(2, 2) )
    model.add( Flatten() )
    model.add( Dense( 5, activation = 'softmax' ) )
    model.summary()
    model.compile( optimizer = 'adam', loss = 'categorical_crossentropy', metrics = [ 'accuracy',tf.keras.metrics.Precision(), tf.keras.metrics.Recall() ] )
    history = model.fit( train_generator, validation_data = valid_generator, epochs = 30, batch_size = 64, callbacks=[early_stopping])
    score = model.evaluate_generator(test_generator, verbose=0)
    print(f'Test loss: {score[0]} / Test accuracy: {score[1]}')
    return history

# plot the learning curve, for accuracy, loss, precision, and recall 
def plot_learning_curve(history, key1, key2, ylabel, title):
    plt.plot(history.history[key1])
    plt.plot(history.history[key2])
    plt.ylabel(ylabel)
    plt.xlabel('Epoch')
    plt.legend(['training data', 'validation data'], loc='lower right')
    plt.title(title)
    plt.show()

# test the result
def test_early_stop(path, layers,image_width, image_height):
    train_generator, valid_generator, test_generator = get_all_generators(path, image_width, image_height)
    history = overfitting_early_stop(train_generator, valid_generator, test_generator, layers,image_width, image_height)
    plot_learning_curve(history, list(history.history.keys())[0],list(history.history.keys())[4], 
                        list(history.history.keys())[0], 'Learning Curve Loss')
    plot_learning_curve(history, list(history.history.keys())[1],list(history.history.keys())[5], 
                        list(history.history.keys())[1], 'Learning Curve Accuracy')
    plot_learning_curve(history, list(history.history.keys())[2],list(history.history.keys())[6], 
                        list(history.history.keys())[2][:list(history.history.keys())[2].rfind('_')], 'Learning Curve Precision')
    plot_learning_curve(history, list(history.history.keys())[3],list(history.history.keys())[7], 
                        list(history.history.keys())[3][:list(history.history.keys())[3].rfind('_')], 'Learning Curve Recall')
    return history
In [ ]:
history = test_early_stop(path, [32],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_44"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_96 (Conv2D)           (None, 254, 254, 32)      896       
_________________________________________________________________
max_pooling2d_81 (MaxPooling (None, 127, 127, 32)      0         
_________________________________________________________________
flatten_38 (Flatten)         (None, 516128)            0         
_________________________________________________________________
dense_70 (Dense)             (None, 5)                 2580645   
=================================================================
Total params: 2,581,541
Trainable params: 2,581,541
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 225ms/step - loss: 10.0567 - accuracy: 0.2638 - precision_38: 0.2190 - recall_38: 0.1209 - val_loss: 1.4989 - val_accuracy: 0.4057 - val_precision_38: 0.6154 - val_recall_38: 0.0603
Epoch 2/30
70/70 [==============================] - 15s 216ms/step - loss: 1.1703 - accuracy: 0.5952 - precision_38: 0.8516 - recall_38: 0.2041 - val_loss: 1.5192 - val_accuracy: 0.4449 - val_precision_38: 0.5312 - val_recall_38: 0.3077
Epoch 3/30
70/70 [==============================] - 15s 219ms/step - loss: 0.5033 - accuracy: 0.8589 - precision_38: 0.9376 - recall_38: 0.7381 - val_loss: 1.5755 - val_accuracy: 0.4646 - val_precision_38: 0.5218 - val_recall_38: 0.3243
Epoch 4/30
70/70 [==============================] - 15s 223ms/step - loss: 0.1727 - accuracy: 0.9746 - precision_38: 0.9921 - recall_38: 0.9445 - val_loss: 1.7510 - val_accuracy: 0.4419 - val_precision_38: 0.4659 - val_recall_38: 0.3605
Epoch 5/30
70/70 [==============================] - 15s 215ms/step - loss: 0.0672 - accuracy: 0.9952 - precision_38: 0.9986 - recall_38: 0.9877 - val_loss: 1.8308 - val_accuracy: 0.4646 - val_precision_38: 0.4926 - val_recall_38: 0.4042
Epoch 6/30
70/70 [==============================] - 15s 220ms/step - loss: 0.0323 - accuracy: 0.9975 - precision_38: 0.9985 - recall_38: 0.9960 - val_loss: 1.8620 - val_accuracy: 0.4646 - val_precision_38: 0.4918 - val_recall_38: 0.4057
Epoch 7/30
70/70 [==============================] - 15s 220ms/step - loss: 0.0301 - accuracy: 0.9967 - precision_38: 0.9967 - recall_38: 0.9967 - val_loss: 1.9788 - val_accuracy: 0.4766 - val_precision_38: 0.4983 - val_recall_38: 0.4480
Epoch 8/30
70/70 [==============================] - 15s 219ms/step - loss: 0.0161 - accuracy: 0.9989 - precision_38: 0.9989 - recall_38: 0.9989 - val_loss: 1.8407 - val_accuracy: 0.4691 - val_precision_38: 0.4991 - val_recall_38: 0.4118
Epoch 9/30
70/70 [==============================] - 15s 218ms/step - loss: 0.0152 - accuracy: 0.9987 - precision_38: 0.9987 - recall_38: 0.9987 - val_loss: 2.0889 - val_accuracy: 0.4600 - val_precision_38: 0.4835 - val_recall_38: 0.4193
Epoch 10/30
70/70 [==============================] - 15s 217ms/step - loss: 0.0175 - accuracy: 0.9985 - precision_38: 0.9985 - recall_38: 0.9985 - val_loss: 2.0493 - val_accuracy: 0.4691 - val_precision_38: 0.4827 - val_recall_38: 0.4208
Epoch 11/30
70/70 [==============================] - 15s 216ms/step - loss: 0.0179 - accuracy: 0.9979 - precision_38: 0.9979 - recall_38: 0.9979 - val_loss: 1.8864 - val_accuracy: 0.4600 - val_precision_38: 0.4772 - val_recall_38: 0.3952
Epoch 12/30
70/70 [==============================] - 15s 219ms/step - loss: 0.0183 - accuracy: 0.9977 - precision_38: 0.9979 - recall_38: 0.9977 - val_loss: 3.0035 - val_accuracy: 0.4072 - val_precision_38: 0.4252 - val_recall_38: 0.3771
Epoch 13/30
70/70 [==============================] - 15s 216ms/step - loss: 0.0990 - accuracy: 0.9836 - precision_38: 0.9906 - recall_38: 0.9761 - val_loss: 2.1560 - val_accuracy: 0.4449 - val_precision_38: 0.4590 - val_recall_38: 0.3967
Epoch 14/30
70/70 [==============================] - 15s 220ms/step - loss: 0.0094 - accuracy: 0.9990 - precision_38: 0.9990 - recall_38: 0.9990 - val_loss: 2.1380 - val_accuracy: 0.4525 - val_precision_38: 0.4884 - val_recall_38: 0.4133
Epoch 15/30
70/70 [==============================] - 15s 217ms/step - loss: 0.0137 - accuracy: 0.9985 - precision_38: 0.9985 - recall_38: 0.9985 - val_loss: 2.1332 - val_accuracy: 0.4525 - val_precision_38: 0.4767 - val_recall_38: 0.4163
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.034569025039673 / Test accuracy: 0.5069444179534912
In [ ]:
history = test_early_stop(path, [32,32],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_45"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_97 (Conv2D)           (None, 254, 254, 32)      896       
_________________________________________________________________
max_pooling2d_82 (MaxPooling (None, 127, 127, 32)      0         
_________________________________________________________________
conv2d_98 (Conv2D)           (None, 125, 125, 32)      9248      
_________________________________________________________________
max_pooling2d_83 (MaxPooling (None, 62, 62, 32)        0         
_________________________________________________________________
flatten_39 (Flatten)         (None, 123008)            0         
_________________________________________________________________
dense_71 (Dense)             (None, 5)                 615045    
=================================================================
Total params: 625,189
Trainable params: 625,189
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 222ms/step - loss: 1.8491 - accuracy: 0.2932 - precision_39: 0.3915 - recall_39: 0.0627 - val_loss: 1.4759 - val_accuracy: 0.4314 - val_precision_39: 0.0000e+00 - val_recall_39: 0.0000e+00
Epoch 2/30
70/70 [==============================] - 16s 227ms/step - loss: 1.3642 - accuracy: 0.4790 - precision_39: 0.6073 - recall_39: 0.1153 - val_loss: 1.3326 - val_accuracy: 0.4872 - val_precision_39: 0.5932 - val_recall_39: 0.2112
Epoch 3/30
70/70 [==============================] - 15s 217ms/step - loss: 1.0542 - accuracy: 0.5976 - precision_39: 0.7264 - recall_39: 0.3704 - val_loss: 1.3274 - val_accuracy: 0.4736 - val_precision_39: 0.6103 - val_recall_39: 0.1795
Epoch 4/30
70/70 [==============================] - 15s 221ms/step - loss: 0.7469 - accuracy: 0.7460 - precision_39: 0.8888 - recall_39: 0.5620 - val_loss: 1.5912 - val_accuracy: 0.4857 - val_precision_39: 0.5264 - val_recall_39: 0.3605
Epoch 5/30
70/70 [==============================] - 15s 217ms/step - loss: 0.3444 - accuracy: 0.9105 - precision_39: 0.9501 - recall_39: 0.8549 - val_loss: 1.7593 - val_accuracy: 0.4691 - val_precision_39: 0.5095 - val_recall_39: 0.4042
Epoch 6/30
70/70 [==============================] - 15s 220ms/step - loss: 0.1684 - accuracy: 0.9547 - precision_39: 0.9771 - recall_39: 0.9367 - val_loss: 2.2179 - val_accuracy: 0.4676 - val_precision_39: 0.4896 - val_recall_39: 0.4268
Epoch 7/30
70/70 [==============================] - 15s 211ms/step - loss: 0.0778 - accuracy: 0.9864 - precision_39: 0.9902 - recall_39: 0.9774 - val_loss: 2.4305 - val_accuracy: 0.4691 - val_precision_39: 0.4958 - val_recall_39: 0.4434
Epoch 8/30
70/70 [==============================] - 15s 221ms/step - loss: 0.0369 - accuracy: 0.9981 - precision_39: 0.9981 - recall_39: 0.9981 - val_loss: 2.6429 - val_accuracy: 0.4615 - val_precision_39: 0.4835 - val_recall_39: 0.4419
Epoch 9/30
70/70 [==============================] - 16s 224ms/step - loss: 0.0308 - accuracy: 0.9966 - precision_39: 0.9966 - recall_39: 0.9964 - val_loss: 2.5846 - val_accuracy: 0.4796 - val_precision_39: 0.4935 - val_recall_39: 0.4585
Epoch 10/30
70/70 [==============================] - 15s 219ms/step - loss: 0.0438 - accuracy: 0.9956 - precision_39: 0.9956 - recall_39: 0.9956 - val_loss: 2.9323 - val_accuracy: 0.4570 - val_precision_39: 0.4647 - val_recall_39: 0.4374
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.853086233139038 / Test accuracy: 0.4756944477558136
In [ ]:
history = test_early_stop(path, [32,32,32],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_46"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_99 (Conv2D)           (None, 254, 254, 32)      896       
_________________________________________________________________
max_pooling2d_84 (MaxPooling (None, 127, 127, 32)      0         
_________________________________________________________________
conv2d_100 (Conv2D)          (None, 125, 125, 32)      9248      
_________________________________________________________________
max_pooling2d_85 (MaxPooling (None, 62, 62, 32)        0         
_________________________________________________________________
conv2d_101 (Conv2D)          (None, 60, 60, 32)        9248      
_________________________________________________________________
max_pooling2d_86 (MaxPooling (None, 30, 30, 32)        0         
_________________________________________________________________
flatten_40 (Flatten)         (None, 28800)             0         
_________________________________________________________________
dense_72 (Dense)             (None, 5)                 144005    
=================================================================
Total params: 163,397
Trainable params: 163,397
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 17s 211ms/step - loss: 1.6471 - accuracy: 0.3145 - precision_40: 0.4923 - recall_40: 0.0404 - val_loss: 1.3400 - val_accuracy: 0.4630 - val_precision_40: 0.6453 - val_recall_40: 0.1674
Epoch 2/30
70/70 [==============================] - 15s 217ms/step - loss: 1.2763 - accuracy: 0.4913 - precision_40: 0.6809 - recall_40: 0.2631 - val_loss: 1.2779 - val_accuracy: 0.4872 - val_precision_40: 0.6232 - val_recall_40: 0.2594
Epoch 3/30
70/70 [==============================] - 15s 219ms/step - loss: 1.0898 - accuracy: 0.5801 - precision_40: 0.7011 - recall_40: 0.3825 - val_loss: 1.2730 - val_accuracy: 0.5249 - val_precision_40: 0.5975 - val_recall_40: 0.2911
Epoch 4/30
70/70 [==============================] - 15s 214ms/step - loss: 0.8685 - accuracy: 0.6786 - precision_40: 0.8034 - recall_40: 0.5299 - val_loss: 1.3717 - val_accuracy: 0.4992 - val_precision_40: 0.5679 - val_recall_40: 0.3786
Epoch 5/30
70/70 [==============================] - 15s 215ms/step - loss: 0.5481 - accuracy: 0.8025 - precision_40: 0.8788 - recall_40: 0.7360 - val_loss: 1.7343 - val_accuracy: 0.4691 - val_precision_40: 0.5054 - val_recall_40: 0.4223
Epoch 6/30
70/70 [==============================] - 15s 221ms/step - loss: 0.3479 - accuracy: 0.8960 - precision_40: 0.9259 - recall_40: 0.8598 - val_loss: 2.0382 - val_accuracy: 0.4827 - val_precision_40: 0.5068 - val_recall_40: 0.4480
Epoch 7/30
70/70 [==============================] - 15s 216ms/step - loss: 0.1829 - accuracy: 0.9517 - precision_40: 0.9659 - recall_40: 0.9377 - val_loss: 2.4233 - val_accuracy: 0.4857 - val_precision_40: 0.4992 - val_recall_40: 0.4661
Epoch 8/30
70/70 [==============================] - 15s 212ms/step - loss: 0.1301 - accuracy: 0.9710 - precision_40: 0.9770 - recall_40: 0.9599 - val_loss: 2.5397 - val_accuracy: 0.4842 - val_precision_40: 0.4961 - val_recall_40: 0.4736
Epoch 9/30
70/70 [==============================] - 15s 215ms/step - loss: 0.0578 - accuracy: 0.9874 - precision_40: 0.9912 - recall_40: 0.9848 - val_loss: 2.9745 - val_accuracy: 0.4842 - val_precision_40: 0.4856 - val_recall_40: 0.4585
Epoch 10/30
70/70 [==============================] - 15s 214ms/step - loss: 0.0626 - accuracy: 0.9824 - precision_40: 0.9852 - recall_40: 0.9789 - val_loss: 3.3354 - val_accuracy: 0.5023 - val_precision_40: 0.5108 - val_recall_40: 0.4977
Epoch 11/30
70/70 [==============================] - 15s 215ms/step - loss: 0.0575 - accuracy: 0.9890 - precision_40: 0.9907 - recall_40: 0.9885 - val_loss: 3.3886 - val_accuracy: 0.4992 - val_precision_40: 0.5023 - val_recall_40: 0.4932
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.1409497261047363 / Test accuracy: 0.5104166865348816
In [ ]:
history = test_early_stop(path, [32,32,32,32],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_47"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_102 (Conv2D)          (None, 254, 254, 32)      896       
_________________________________________________________________
max_pooling2d_87 (MaxPooling (None, 127, 127, 32)      0         
_________________________________________________________________
conv2d_103 (Conv2D)          (None, 125, 125, 32)      9248      
_________________________________________________________________
max_pooling2d_88 (MaxPooling (None, 62, 62, 32)        0         
_________________________________________________________________
conv2d_104 (Conv2D)          (None, 60, 60, 32)        9248      
_________________________________________________________________
max_pooling2d_89 (MaxPooling (None, 30, 30, 32)        0         
_________________________________________________________________
conv2d_105 (Conv2D)          (None, 28, 28, 32)        9248      
_________________________________________________________________
max_pooling2d_90 (MaxPooling (None, 14, 14, 32)        0         
_________________________________________________________________
flatten_41 (Flatten)         (None, 6272)              0         
_________________________________________________________________
dense_73 (Dense)             (None, 5)                 31365     
=================================================================
Total params: 60,005
Trainable params: 60,005
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 215ms/step - loss: 1.6030 - accuracy: 0.2389 - precision_41: 0.0563 - recall_41: 2.5600e-05 - val_loss: 1.5232 - val_accuracy: 0.3650 - val_precision_41: 0.8750 - val_recall_41: 0.0106
Epoch 2/30
70/70 [==============================] - 15s 219ms/step - loss: 1.5070 - accuracy: 0.3557 - precision_41: 0.4902 - recall_41: 0.0297 - val_loss: 1.3734 - val_accuracy: 0.4495 - val_precision_41: 0.5777 - val_recall_41: 0.1795
Epoch 3/30
70/70 [==============================] - 15s 213ms/step - loss: 1.3019 - accuracy: 0.4913 - precision_41: 0.5943 - recall_41: 0.1894 - val_loss: 1.3105 - val_accuracy: 0.4872 - val_precision_41: 0.6310 - val_recall_41: 0.2579
Epoch 4/30
70/70 [==============================] - 15s 207ms/step - loss: 1.1184 - accuracy: 0.5567 - precision_41: 0.6930 - recall_41: 0.3584 - val_loss: 1.2354 - val_accuracy: 0.5460 - val_precision_41: 0.6045 - val_recall_41: 0.3228
Epoch 5/30
70/70 [==============================] - 15s 210ms/step - loss: 1.0007 - accuracy: 0.6040 - precision_41: 0.7276 - recall_41: 0.4446 - val_loss: 1.2534 - val_accuracy: 0.5400 - val_precision_41: 0.6061 - val_recall_41: 0.3876
Epoch 6/30
70/70 [==============================] - 15s 215ms/step - loss: 0.9068 - accuracy: 0.6568 - precision_41: 0.7550 - recall_41: 0.5073 - val_loss: 1.3239 - val_accuracy: 0.5143 - val_precision_41: 0.5905 - val_recall_41: 0.4329
Epoch 7/30
70/70 [==============================] - 15s 212ms/step - loss: 0.7084 - accuracy: 0.7405 - precision_41: 0.8156 - recall_41: 0.6384 - val_loss: 1.3628 - val_accuracy: 0.5370 - val_precision_41: 0.5981 - val_recall_41: 0.4646
Epoch 8/30
70/70 [==============================] - 15s 219ms/step - loss: 0.5538 - accuracy: 0.8010 - precision_41: 0.8683 - recall_41: 0.7431 - val_loss: 1.4519 - val_accuracy: 0.5249 - val_precision_41: 0.5714 - val_recall_41: 0.4525
Epoch 9/30
70/70 [==============================] - 15s 218ms/step - loss: 0.4388 - accuracy: 0.8496 - precision_41: 0.8937 - recall_41: 0.7943 - val_loss: 1.7123 - val_accuracy: 0.5068 - val_precision_41: 0.5278 - val_recall_41: 0.4585
Epoch 10/30
70/70 [==============================] - 15s 217ms/step - loss: 0.3031 - accuracy: 0.8994 - precision_41: 0.9242 - recall_41: 0.8739 - val_loss: 2.2390 - val_accuracy: 0.5098 - val_precision_41: 0.5242 - val_recall_41: 0.4902
Epoch 11/30
70/70 [==============================] - 15s 213ms/step - loss: 0.1807 - accuracy: 0.9415 - precision_41: 0.9551 - recall_41: 0.9291 - val_loss: 2.2428 - val_accuracy: 0.5008 - val_precision_41: 0.5241 - val_recall_41: 0.4751
Epoch 12/30
70/70 [==============================] - 15s 211ms/step - loss: 0.1162 - accuracy: 0.9729 - precision_41: 0.9778 - recall_41: 0.9672 - val_loss: 2.6741 - val_accuracy: 0.5264 - val_precision_41: 0.5365 - val_recall_41: 0.5098
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.281705141067505 / Test accuracy: 0.5486111044883728
In [ ]:
history = test_early_stop(path, [32,32,32,32,32],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_48"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_106 (Conv2D)          (None, 254, 254, 32)      896       
_________________________________________________________________
max_pooling2d_91 (MaxPooling (None, 127, 127, 32)      0         
_________________________________________________________________
conv2d_107 (Conv2D)          (None, 125, 125, 32)      9248      
_________________________________________________________________
max_pooling2d_92 (MaxPooling (None, 62, 62, 32)        0         
_________________________________________________________________
conv2d_108 (Conv2D)          (None, 60, 60, 32)        9248      
_________________________________________________________________
max_pooling2d_93 (MaxPooling (None, 30, 30, 32)        0         
_________________________________________________________________
conv2d_109 (Conv2D)          (None, 28, 28, 32)        9248      
_________________________________________________________________
max_pooling2d_94 (MaxPooling (None, 14, 14, 32)        0         
_________________________________________________________________
conv2d_110 (Conv2D)          (None, 12, 12, 32)        9248      
_________________________________________________________________
max_pooling2d_95 (MaxPooling (None, 6, 6, 32)          0         
_________________________________________________________________
flatten_42 (Flatten)         (None, 1152)              0         
_________________________________________________________________
dense_74 (Dense)             (None, 5)                 5765      
=================================================================
Total params: 43,653
Trainable params: 43,653
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 217ms/step - loss: 1.5579 - accuracy: 0.2868 - precision_42: 0.3085 - recall_42: 0.0229 - val_loss: 1.4199 - val_accuracy: 0.4087 - val_precision_42: 0.7000 - val_recall_42: 0.1056
Epoch 2/30
70/70 [==============================] - 15s 210ms/step - loss: 1.4163 - accuracy: 0.4235 - precision_42: 0.5766 - recall_42: 0.1208 - val_loss: 1.3366 - val_accuracy: 0.4917 - val_precision_42: 0.6195 - val_recall_42: 0.2112
Epoch 3/30
70/70 [==============================] - 15s 215ms/step - loss: 1.2748 - accuracy: 0.5154 - precision_42: 0.6657 - recall_42: 0.2726 - val_loss: 1.2835 - val_accuracy: 0.5083 - val_precision_42: 0.6367 - val_recall_42: 0.2459
Epoch 4/30
70/70 [==============================] - 15s 209ms/step - loss: 1.2271 - accuracy: 0.5274 - precision_42: 0.6698 - recall_42: 0.2916 - val_loss: 1.2053 - val_accuracy: 0.5430 - val_precision_42: 0.6184 - val_recall_42: 0.3544
Epoch 5/30
70/70 [==============================] - 15s 208ms/step - loss: 1.1296 - accuracy: 0.5679 - precision_42: 0.6929 - recall_42: 0.3771 - val_loss: 1.2428 - val_accuracy: 0.5370 - val_precision_42: 0.6163 - val_recall_42: 0.4118
Epoch 6/30
70/70 [==============================] - 15s 211ms/step - loss: 1.0779 - accuracy: 0.5852 - precision_42: 0.6871 - recall_42: 0.4139 - val_loss: 1.1541 - val_accuracy: 0.5641 - val_precision_42: 0.6640 - val_recall_42: 0.3816
Epoch 7/30
70/70 [==============================] - 15s 214ms/step - loss: 1.0604 - accuracy: 0.5882 - precision_42: 0.7021 - recall_42: 0.4283 - val_loss: 1.1581 - val_accuracy: 0.5596 - val_precision_42: 0.6650 - val_recall_42: 0.4103
Epoch 8/30
70/70 [==============================] - 15s 222ms/step - loss: 0.9967 - accuracy: 0.6148 - precision_42: 0.7268 - recall_42: 0.4605 - val_loss: 1.2365 - val_accuracy: 0.5324 - val_precision_42: 0.6214 - val_recall_42: 0.3937
Epoch 9/30
70/70 [==============================] - 15s 215ms/step - loss: 0.9642 - accuracy: 0.6313 - precision_42: 0.7594 - recall_42: 0.4787 - val_loss: 1.1864 - val_accuracy: 0.5309 - val_precision_42: 0.6427 - val_recall_42: 0.3906
Epoch 10/30
70/70 [==============================] - 15s 213ms/step - loss: 0.8217 - accuracy: 0.6844 - precision_42: 0.7826 - recall_42: 0.5689 - val_loss: 1.1171 - val_accuracy: 0.5641 - val_precision_42: 0.6560 - val_recall_42: 0.4344
Epoch 11/30
70/70 [==============================] - 14s 207ms/step - loss: 0.7937 - accuracy: 0.7068 - precision_42: 0.7924 - recall_42: 0.5980 - val_loss: 1.1159 - val_accuracy: 0.6169 - val_precision_42: 0.6771 - val_recall_42: 0.4902
Epoch 12/30
70/70 [==============================] - 15s 214ms/step - loss: 0.6892 - accuracy: 0.7519 - precision_42: 0.8284 - recall_42: 0.6718 - val_loss: 1.1656 - val_accuracy: 0.6003 - val_precision_42: 0.6533 - val_recall_42: 0.5400
Epoch 13/30
70/70 [==============================] - 15s 213ms/step - loss: 0.6405 - accuracy: 0.7625 - precision_42: 0.8270 - recall_42: 0.7005 - val_loss: 1.1900 - val_accuracy: 0.5747 - val_precision_42: 0.6335 - val_recall_42: 0.5083
Epoch 14/30
70/70 [==============================] - 15s 213ms/step - loss: 0.5637 - accuracy: 0.7982 - precision_42: 0.8483 - recall_42: 0.7387 - val_loss: 1.2790 - val_accuracy: 0.5701 - val_precision_42: 0.6104 - val_recall_42: 0.4962
Epoch 15/30
70/70 [==============================] - 15s 212ms/step - loss: 0.5423 - accuracy: 0.7978 - precision_42: 0.8518 - recall_42: 0.7539 - val_loss: 1.3136 - val_accuracy: 0.5762 - val_precision_42: 0.6076 - val_recall_42: 0.5279
Epoch 16/30
70/70 [==============================] - 15s 215ms/step - loss: 0.4850 - accuracy: 0.8171 - precision_42: 0.8596 - recall_42: 0.7754 - val_loss: 1.4201 - val_accuracy: 0.5852 - val_precision_42: 0.6192 - val_recall_42: 0.5445
Epoch 17/30
70/70 [==============================] - 15s 210ms/step - loss: 0.3804 - accuracy: 0.8670 - precision_42: 0.8962 - recall_42: 0.8277 - val_loss: 1.5722 - val_accuracy: 0.5837 - val_precision_42: 0.6093 - val_recall_42: 0.5505
Epoch 18/30
70/70 [==============================] - 15s 211ms/step - loss: 0.3262 - accuracy: 0.8852 - precision_42: 0.9166 - recall_42: 0.8669 - val_loss: 1.8088 - val_accuracy: 0.5520 - val_precision_42: 0.5854 - val_recall_42: 0.5324
Epoch 19/30
70/70 [==============================] - 15s 212ms/step - loss: 0.3269 - accuracy: 0.8752 - precision_42: 0.9017 - recall_42: 0.8462 - val_loss: 1.7108 - val_accuracy: 0.5490 - val_precision_42: 0.5660 - val_recall_42: 0.5173
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 1.6675474643707275 / Test accuracy: 0.5729166865348816
In [ ]:
history = test_early_stop(path, [32,32,32,32,32,32],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_49"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_111 (Conv2D)          (None, 254, 254, 32)      896       
_________________________________________________________________
max_pooling2d_96 (MaxPooling (None, 127, 127, 32)      0         
_________________________________________________________________
conv2d_112 (Conv2D)          (None, 125, 125, 32)      9248      
_________________________________________________________________
max_pooling2d_97 (MaxPooling (None, 62, 62, 32)        0         
_________________________________________________________________
conv2d_113 (Conv2D)          (None, 60, 60, 32)        9248      
_________________________________________________________________
max_pooling2d_98 (MaxPooling (None, 30, 30, 32)        0         
_________________________________________________________________
conv2d_114 (Conv2D)          (None, 28, 28, 32)        9248      
_________________________________________________________________
max_pooling2d_99 (MaxPooling (None, 14, 14, 32)        0         
_________________________________________________________________
conv2d_115 (Conv2D)          (None, 12, 12, 32)        9248      
_________________________________________________________________
max_pooling2d_100 (MaxPoolin (None, 6, 6, 32)          0         
_________________________________________________________________
conv2d_116 (Conv2D)          (None, 4, 4, 32)          9248      
_________________________________________________________________
max_pooling2d_101 (MaxPoolin (None, 2, 2, 32)          0         
_________________________________________________________________
flatten_43 (Flatten)         (None, 128)               0         
_________________________________________________________________
dense_75 (Dense)             (None, 5)                 645       
=================================================================
Total params: 47,781
Trainable params: 47,781
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 217ms/step - loss: 1.5848 - accuracy: 0.2706 - precision_43: 0.1310 - recall_43: 0.0011 - val_loss: 1.4670 - val_accuracy: 0.3997 - val_precision_43: 0.6304 - val_recall_43: 0.0437
Epoch 2/30
70/70 [==============================] - 15s 209ms/step - loss: 1.4634 - accuracy: 0.3810 - precision_43: 0.6289 - recall_43: 0.0837 - val_loss: 1.4588 - val_accuracy: 0.3997 - val_precision_43: 0.5139 - val_recall_43: 0.1674
Epoch 3/30
70/70 [==============================] - 15s 212ms/step - loss: 1.3683 - accuracy: 0.4401 - precision_43: 0.5940 - recall_43: 0.1820 - val_loss: 1.4051 - val_accuracy: 0.4495 - val_precision_43: 0.5739 - val_recall_43: 0.0995
Epoch 4/30
70/70 [==============================] - 15s 209ms/step - loss: 1.3523 - accuracy: 0.4796 - precision_43: 0.6126 - recall_43: 0.1442 - val_loss: 1.3607 - val_accuracy: 0.4661 - val_precision_43: 0.6357 - val_recall_43: 0.1342
Epoch 5/30
70/70 [==============================] - 15s 212ms/step - loss: 1.3216 - accuracy: 0.4798 - precision_43: 0.6324 - recall_43: 0.2091 - val_loss: 1.2787 - val_accuracy: 0.5113 - val_precision_43: 0.6633 - val_recall_43: 0.1991
Epoch 6/30
70/70 [==============================] - 15s 214ms/step - loss: 1.2421 - accuracy: 0.5120 - precision_43: 0.6617 - recall_43: 0.2849 - val_loss: 1.2782 - val_accuracy: 0.5339 - val_precision_43: 0.6346 - val_recall_43: 0.2881
Epoch 7/30
70/70 [==============================] - 15s 211ms/step - loss: 1.2062 - accuracy: 0.5318 - precision_43: 0.6550 - recall_43: 0.3373 - val_loss: 1.2150 - val_accuracy: 0.5309 - val_precision_43: 0.5947 - val_recall_43: 0.4027
Epoch 8/30
70/70 [==============================] - 15s 208ms/step - loss: 1.1291 - accuracy: 0.5721 - precision_43: 0.6830 - recall_43: 0.4046 - val_loss: 1.1909 - val_accuracy: 0.5490 - val_precision_43: 0.6509 - val_recall_43: 0.3937
Epoch 9/30
70/70 [==============================] - 15s 209ms/step - loss: 1.0820 - accuracy: 0.5742 - precision_43: 0.7086 - recall_43: 0.3945 - val_loss: 1.2395 - val_accuracy: 0.5566 - val_precision_43: 0.6165 - val_recall_43: 0.3952
Epoch 10/30
70/70 [==============================] - 15s 210ms/step - loss: 1.0191 - accuracy: 0.6294 - precision_43: 0.7242 - recall_43: 0.4515 - val_loss: 1.1510 - val_accuracy: 0.5505 - val_precision_43: 0.6537 - val_recall_43: 0.4299
Epoch 11/30
70/70 [==============================] - 15s 210ms/step - loss: 0.9423 - accuracy: 0.6245 - precision_43: 0.7324 - recall_43: 0.5035 - val_loss: 1.1555 - val_accuracy: 0.5551 - val_precision_43: 0.6486 - val_recall_43: 0.4344
Epoch 12/30
70/70 [==============================] - 15s 214ms/step - loss: 0.9231 - accuracy: 0.6415 - precision_43: 0.7411 - recall_43: 0.5210 - val_loss: 1.1805 - val_accuracy: 0.5671 - val_precision_43: 0.6369 - val_recall_43: 0.4947
Epoch 13/30
70/70 [==============================] - 15s 208ms/step - loss: 0.8745 - accuracy: 0.6660 - precision_43: 0.7581 - recall_43: 0.5511 - val_loss: 1.1430 - val_accuracy: 0.5897 - val_precision_43: 0.6673 - val_recall_43: 0.4932
Epoch 14/30
70/70 [==============================] - 14s 205ms/step - loss: 0.7562 - accuracy: 0.7176 - precision_43: 0.7912 - recall_43: 0.6273 - val_loss: 1.1488 - val_accuracy: 0.5882 - val_precision_43: 0.6461 - val_recall_43: 0.4736
Epoch 15/30
70/70 [==============================] - 15s 207ms/step - loss: 0.6845 - accuracy: 0.7470 - precision_43: 0.8191 - recall_43: 0.6722 - val_loss: 1.1403 - val_accuracy: 0.5943 - val_precision_43: 0.6680 - val_recall_43: 0.4977
Epoch 16/30
70/70 [==============================] - 14s 208ms/step - loss: 0.5981 - accuracy: 0.7809 - precision_43: 0.8423 - recall_43: 0.7190 - val_loss: 1.2649 - val_accuracy: 0.5596 - val_precision_43: 0.6152 - val_recall_43: 0.4630
Epoch 17/30
70/70 [==============================] - 14s 208ms/step - loss: 0.6294 - accuracy: 0.7632 - precision_43: 0.8362 - recall_43: 0.6949 - val_loss: 1.1990 - val_accuracy: 0.5837 - val_precision_43: 0.6420 - val_recall_43: 0.5113
Epoch 18/30
70/70 [==============================] - 15s 216ms/step - loss: 0.4767 - accuracy: 0.8260 - precision_43: 0.8759 - recall_43: 0.7763 - val_loss: 1.3023 - val_accuracy: 0.5611 - val_precision_43: 0.6164 - val_recall_43: 0.4992
Epoch 19/30
70/70 [==============================] - 15s 211ms/step - loss: 0.4105 - accuracy: 0.8605 - precision_43: 0.9014 - recall_43: 0.8196 - val_loss: 1.5103 - val_accuracy: 0.5792 - val_precision_43: 0.6034 - val_recall_43: 0.5415
Epoch 20/30
70/70 [==============================] - 15s 214ms/step - loss: 0.3655 - accuracy: 0.8675 - precision_43: 0.8950 - recall_43: 0.8372 - val_loss: 1.5157 - val_accuracy: 0.5928 - val_precision_43: 0.6235 - val_recall_43: 0.5596
Epoch 21/30
70/70 [==============================] - 15s 213ms/step - loss: 0.2653 - accuracy: 0.9154 - precision_43: 0.9293 - recall_43: 0.8936 - val_loss: 1.5692 - val_accuracy: 0.5867 - val_precision_43: 0.6113 - val_recall_43: 0.5551
Epoch 22/30
70/70 [==============================] - 15s 213ms/step - loss: 0.2556 - accuracy: 0.9098 - precision_43: 0.9299 - recall_43: 0.8935 - val_loss: 1.8120 - val_accuracy: 0.5520 - val_precision_43: 0.5661 - val_recall_43: 0.5234
Epoch 23/30
70/70 [==============================] - 15s 211ms/step - loss: 0.3170 - accuracy: 0.8876 - precision_43: 0.9118 - recall_43: 0.8693 - val_loss: 1.7262 - val_accuracy: 0.5852 - val_precision_43: 0.6003 - val_recall_43: 0.5686
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 1.61752188205719 / Test accuracy: 0.6076388955116272
In [ ]:
# history = test_early_stop(path, [32,32,32,32,32,32,32],image_width, image_height)
# report error since too large system
In [ ]:
history = test_early_stop(path, [16],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_34"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_66 (Conv2D)           (None, 254, 254, 16)      448       
_________________________________________________________________
max_pooling2d_22 (MaxPooling (None, 127, 127, 16)      0         
_________________________________________________________________
flatten_33 (Flatten)         (None, 258064)            0         
_________________________________________________________________
dense_49 (Dense)             (None, 5)                 1290325   
=================================================================
Total params: 1,290,773
Trainable params: 1,290,773
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 549s 8s/step - loss: 14.2754 - accuracy: 0.2504 - precision_33: 0.2440 - recall_33: 0.1915 - val_loss: 1.4855 - val_accuracy: 0.3937 - val_precision_33: 0.4407 - val_recall_33: 0.0392
Epoch 2/30
70/70 [==============================] - 12s 173ms/step - loss: 1.2336 - accuracy: 0.5426 - precision_33: 0.7186 - recall_33: 0.1890 - val_loss: 1.4113 - val_accuracy: 0.4480 - val_precision_33: 0.5671 - val_recall_33: 0.2549
Epoch 3/30
70/70 [==============================] - 12s 167ms/step - loss: 0.6221 - accuracy: 0.8082 - precision_33: 0.9184 - recall_33: 0.6583 - val_loss: 1.4611 - val_accuracy: 0.4510 - val_precision_33: 0.5113 - val_recall_33: 0.3062
Epoch 4/30
70/70 [==============================] - 12s 173ms/step - loss: 0.2299 - accuracy: 0.9591 - precision_33: 0.9893 - recall_33: 0.9131 - val_loss: 1.8304 - val_accuracy: 0.4615 - val_precision_33: 0.5216 - val_recall_33: 0.4012
Epoch 5/30
70/70 [==============================] - 12s 173ms/step - loss: 0.1087 - accuracy: 0.9890 - precision_33: 0.9937 - recall_33: 0.9783 - val_loss: 1.8345 - val_accuracy: 0.4781 - val_precision_33: 0.5057 - val_recall_33: 0.4042
Epoch 6/30
70/70 [==============================] - 12s 172ms/step - loss: 0.0364 - accuracy: 0.9987 - precision_33: 0.9987 - recall_33: 0.9972 - val_loss: 2.0806 - val_accuracy: 0.4600 - val_precision_33: 0.4815 - val_recall_33: 0.4133
Epoch 7/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0247 - accuracy: 0.9996 - precision_33: 0.9996 - recall_33: 0.9992 - val_loss: 1.8900 - val_accuracy: 0.4827 - val_precision_33: 0.5026 - val_recall_33: 0.4329
Epoch 8/30
70/70 [==============================] - 12s 171ms/step - loss: 0.0213 - accuracy: 0.9985 - precision_33: 0.9985 - recall_33: 0.9985 - val_loss: 2.0644 - val_accuracy: 0.4600 - val_precision_33: 0.4877 - val_recall_33: 0.4178
Epoch 9/30
70/70 [==============================] - 12s 172ms/step - loss: 0.0185 - accuracy: 0.9989 - precision_33: 0.9989 - recall_33: 0.9989 - val_loss: 2.0212 - val_accuracy: 0.4766 - val_precision_33: 0.5009 - val_recall_33: 0.4238
Epoch 10/30
70/70 [==============================] - 12s 171ms/step - loss: 0.0155 - accuracy: 0.9989 - precision_33: 0.9989 - recall_33: 0.9989 - val_loss: 2.0170 - val_accuracy: 0.4827 - val_precision_33: 0.5096 - val_recall_33: 0.4419
Epoch 11/30
70/70 [==============================] - 12s 172ms/step - loss: 0.0225 - accuracy: 0.9956 - precision_33: 0.9956 - recall_33: 0.9956 - val_loss: 2.0228 - val_accuracy: 0.4827 - val_precision_33: 0.5061 - val_recall_33: 0.4404
Epoch 12/30
70/70 [==============================] - 12s 171ms/step - loss: 0.0170 - accuracy: 0.9983 - precision_33: 0.9983 - recall_33: 0.9983 - val_loss: 2.1449 - val_accuracy: 0.4706 - val_precision_33: 0.4812 - val_recall_33: 0.4238
Epoch 13/30
70/70 [==============================] - 12s 171ms/step - loss: 0.0134 - accuracy: 0.9987 - precision_33: 0.9987 - recall_33: 0.9987 - val_loss: 2.1273 - val_accuracy: 0.4781 - val_precision_33: 0.5042 - val_recall_33: 0.4495
Epoch 14/30
70/70 [==============================] - 12s 171ms/step - loss: 0.0107 - accuracy: 0.9985 - precision_33: 0.9985 - recall_33: 0.9985 - val_loss: 2.2960 - val_accuracy: 0.4510 - val_precision_33: 0.4556 - val_recall_33: 0.4027
Epoch 15/30
70/70 [==============================] - 12s 170ms/step - loss: 0.0268 - accuracy: 0.9960 - precision_33: 0.9960 - recall_33: 0.9960 - val_loss: 2.1290 - val_accuracy: 0.4796 - val_precision_33: 0.4949 - val_recall_33: 0.4404
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.035675287246704 / Test accuracy: 0.5208333134651184
In [ ]:
history = test_early_stop(path, [16,16],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_52"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_125 (Conv2D)          (None, 254, 254, 16)      448       
_________________________________________________________________
max_pooling2d_109 (MaxPoolin (None, 127, 127, 16)      0         
_________________________________________________________________
conv2d_126 (Conv2D)          (None, 125, 125, 16)      2320      
_________________________________________________________________
max_pooling2d_110 (MaxPoolin (None, 62, 62, 16)        0         
_________________________________________________________________
flatten_45 (Flatten)         (None, 61504)             0         
_________________________________________________________________
dense_77 (Dense)             (None, 5)                 307525    
=================================================================
Total params: 310,293
Trainable params: 310,293
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 17s 232ms/step - loss: 2.6801 - accuracy: 0.2540 - precision_45: 0.2232 - recall_45: 0.0538 - val_loss: 1.4740 - val_accuracy: 0.3876 - val_precision_45: 0.5596 - val_recall_45: 0.0920
Epoch 2/30
70/70 [==============================] - 15s 220ms/step - loss: 1.3445 - accuracy: 0.4699 - precision_45: 0.6740 - recall_45: 0.1298 - val_loss: 1.3934 - val_accuracy: 0.4419 - val_precision_45: 0.5647 - val_recall_45: 0.2172
Epoch 3/30
70/70 [==============================] - 15s 214ms/step - loss: 1.1346 - accuracy: 0.5691 - precision_45: 0.7500 - recall_45: 0.3006 - val_loss: 1.3753 - val_accuracy: 0.4706 - val_precision_45: 0.5992 - val_recall_45: 0.2368
Epoch 4/30
70/70 [==============================] - 15s 216ms/step - loss: 0.8214 - accuracy: 0.7285 - precision_45: 0.8867 - recall_45: 0.5287 - val_loss: 1.4928 - val_accuracy: 0.4133 - val_precision_45: 0.5014 - val_recall_45: 0.2670
Epoch 5/30
70/70 [==============================] - 15s 216ms/step - loss: 0.4860 - accuracy: 0.8742 - precision_45: 0.9399 - recall_45: 0.7667 - val_loss: 1.6567 - val_accuracy: 0.4600 - val_precision_45: 0.4980 - val_recall_45: 0.3710
Epoch 6/30
70/70 [==============================] - 15s 218ms/step - loss: 0.2283 - accuracy: 0.9561 - precision_45: 0.9814 - recall_45: 0.9125 - val_loss: 1.9039 - val_accuracy: 0.4449 - val_precision_45: 0.4823 - val_recall_45: 0.3906
Epoch 7/30
70/70 [==============================] - 15s 218ms/step - loss: 0.1141 - accuracy: 0.9842 - precision_45: 0.9897 - recall_45: 0.9781 - val_loss: 2.3265 - val_accuracy: 0.4374 - val_precision_45: 0.4561 - val_recall_45: 0.4072
Epoch 8/30
70/70 [==============================] - 15s 215ms/step - loss: 0.0491 - accuracy: 0.9964 - precision_45: 0.9973 - recall_45: 0.9945 - val_loss: 2.2387 - val_accuracy: 0.4434 - val_precision_45: 0.4732 - val_recall_45: 0.4133
Epoch 9/30
70/70 [==============================] - 15s 217ms/step - loss: 0.0511 - accuracy: 0.9971 - precision_45: 0.9971 - recall_45: 0.9971 - val_loss: 2.4129 - val_accuracy: 0.4419 - val_precision_45: 0.4608 - val_recall_45: 0.4163
Epoch 10/30
70/70 [==============================] - 15s 219ms/step - loss: 0.0154 - accuracy: 0.9991 - precision_45: 0.9991 - recall_45: 0.9990 - val_loss: 2.4954 - val_accuracy: 0.4344 - val_precision_45: 0.4502 - val_recall_45: 0.4163
Epoch 11/30
70/70 [==============================] - 15s 221ms/step - loss: 0.0199 - accuracy: 0.9987 - precision_45: 0.9988 - recall_45: 0.9987 - val_loss: 2.6187 - val_accuracy: 0.4268 - val_precision_45: 0.4457 - val_recall_45: 0.4027
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.2802600860595703 / Test accuracy: 0.4895833432674408
In [ ]:
history = test_early_stop(path, [16,16,16],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_53"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_127 (Conv2D)          (None, 254, 254, 16)      448       
_________________________________________________________________
max_pooling2d_111 (MaxPoolin (None, 127, 127, 16)      0         
_________________________________________________________________
conv2d_128 (Conv2D)          (None, 125, 125, 16)      2320      
_________________________________________________________________
max_pooling2d_112 (MaxPoolin (None, 62, 62, 16)        0         
_________________________________________________________________
conv2d_129 (Conv2D)          (None, 60, 60, 16)        2320      
_________________________________________________________________
max_pooling2d_113 (MaxPoolin (None, 30, 30, 16)        0         
_________________________________________________________________
flatten_46 (Flatten)         (None, 14400)             0         
_________________________________________________________________
dense_78 (Dense)             (None, 5)                 72005     
=================================================================
Total params: 77,093
Trainable params: 77,093
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 217ms/step - loss: 1.5709 - accuracy: 0.2953 - precision_46: 0.4163 - recall_46: 0.0134 - val_loss: 1.4370 - val_accuracy: 0.3922 - val_precision_46: 0.5686 - val_recall_46: 0.1750
Epoch 2/30
70/70 [==============================] - 15s 215ms/step - loss: 1.3190 - accuracy: 0.4661 - precision_46: 0.6612 - recall_46: 0.1958 - val_loss: 1.3287 - val_accuracy: 0.4902 - val_precision_46: 0.6407 - val_recall_46: 0.1614
Epoch 3/30
70/70 [==============================] - 15s 220ms/step - loss: 1.2114 - accuracy: 0.5221 - precision_46: 0.6957 - recall_46: 0.2614 - val_loss: 1.3053 - val_accuracy: 0.4827 - val_precision_46: 0.5836 - val_recall_46: 0.2790
Epoch 4/30
70/70 [==============================] - 15s 213ms/step - loss: 0.9812 - accuracy: 0.6159 - precision_46: 0.7479 - recall_46: 0.4447 - val_loss: 1.4322 - val_accuracy: 0.4600 - val_precision_46: 0.5457 - val_recall_46: 0.3062
Epoch 5/30
70/70 [==============================] - 15s 218ms/step - loss: 0.8145 - accuracy: 0.7016 - precision_46: 0.8321 - recall_46: 0.5471 - val_loss: 1.3606 - val_accuracy: 0.4917 - val_precision_46: 0.5613 - val_recall_46: 0.3454
Epoch 6/30
70/70 [==============================] - 15s 209ms/step - loss: 0.6100 - accuracy: 0.8012 - precision_46: 0.8824 - recall_46: 0.6856 - val_loss: 1.6019 - val_accuracy: 0.4872 - val_precision_46: 0.5268 - val_recall_46: 0.4148
Epoch 7/30
70/70 [==============================] - 15s 212ms/step - loss: 0.4195 - accuracy: 0.8649 - precision_46: 0.9116 - recall_46: 0.8014 - val_loss: 1.9120 - val_accuracy: 0.4615 - val_precision_46: 0.4956 - val_recall_46: 0.4238
Epoch 8/30
70/70 [==============================] - 15s 213ms/step - loss: 0.2419 - accuracy: 0.9347 - precision_46: 0.9604 - recall_46: 0.9013 - val_loss: 2.1049 - val_accuracy: 0.4661 - val_precision_46: 0.4914 - val_recall_46: 0.4329
Epoch 9/30
70/70 [==============================] - 15s 214ms/step - loss: 0.1504 - accuracy: 0.9685 - precision_46: 0.9767 - recall_46: 0.9582 - val_loss: 2.3281 - val_accuracy: 0.4691 - val_precision_46: 0.4814 - val_recall_46: 0.4495
Epoch 10/30
70/70 [==============================] - 15s 211ms/step - loss: 0.0923 - accuracy: 0.9796 - precision_46: 0.9827 - recall_46: 0.9735 - val_loss: 2.7228 - val_accuracy: 0.4721 - val_precision_46: 0.4829 - val_recall_46: 0.4465
Epoch 11/30
70/70 [==============================] - 15s 210ms/step - loss: 0.0472 - accuracy: 0.9964 - precision_46: 0.9965 - recall_46: 0.9948 - val_loss: 2.8188 - val_accuracy: 0.4706 - val_precision_46: 0.4831 - val_recall_46: 0.4525
Epoch 12/30
70/70 [==============================] - 15s 206ms/step - loss: 0.0588 - accuracy: 0.9915 - precision_46: 0.9915 - recall_46: 0.9901 - val_loss: 3.2129 - val_accuracy: 0.4570 - val_precision_46: 0.4635 - val_recall_46: 0.4404
Epoch 13/30
70/70 [==============================] - 15s 211ms/step - loss: 0.0263 - accuracy: 0.9970 - precision_46: 0.9975 - recall_46: 0.9969 - val_loss: 3.0655 - val_accuracy: 0.4600 - val_precision_46: 0.4736 - val_recall_46: 0.4465
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.018557548522949 / Test accuracy: 0.5
In [ ]:
history = test_early_stop(path, [16,16,16,16],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_54"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_130 (Conv2D)          (None, 254, 254, 16)      448       
_________________________________________________________________
max_pooling2d_114 (MaxPoolin (None, 127, 127, 16)      0         
_________________________________________________________________
conv2d_131 (Conv2D)          (None, 125, 125, 16)      2320      
_________________________________________________________________
max_pooling2d_115 (MaxPoolin (None, 62, 62, 16)        0         
_________________________________________________________________
conv2d_132 (Conv2D)          (None, 60, 60, 16)        2320      
_________________________________________________________________
max_pooling2d_116 (MaxPoolin (None, 30, 30, 16)        0         
_________________________________________________________________
conv2d_133 (Conv2D)          (None, 28, 28, 16)        2320      
_________________________________________________________________
max_pooling2d_117 (MaxPoolin (None, 14, 14, 16)        0         
_________________________________________________________________
flatten_47 (Flatten)         (None, 3136)              0         
_________________________________________________________________
dense_79 (Dense)             (None, 5)                 15685     
=================================================================
Total params: 23,093
Trainable params: 23,093
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 218ms/step - loss: 1.5884 - accuracy: 0.2706 - precision_47: 0.2241 - recall_47: 0.0044 - val_loss: 1.5111 - val_accuracy: 0.3771 - val_precision_47: 1.0000 - val_recall_47: 0.0030
Epoch 2/30
70/70 [==============================] - 15s 208ms/step - loss: 1.4499 - accuracy: 0.3995 - precision_47: 0.5491 - recall_47: 0.0699 - val_loss: 1.3897 - val_accuracy: 0.4238 - val_precision_47: 0.5578 - val_recall_47: 0.1674
Epoch 3/30
70/70 [==============================] - 15s 209ms/step - loss: 1.3555 - accuracy: 0.4452 - precision_47: 0.6274 - recall_47: 0.1756 - val_loss: 1.3768 - val_accuracy: 0.4600 - val_precision_47: 0.6299 - val_recall_47: 0.1207
Epoch 4/30
70/70 [==============================] - 15s 210ms/step - loss: 1.2341 - accuracy: 0.5153 - precision_47: 0.6761 - recall_47: 0.2658 - val_loss: 1.2993 - val_accuracy: 0.4827 - val_precision_47: 0.6242 - val_recall_47: 0.2805
Epoch 5/30
70/70 [==============================] - 14s 208ms/step - loss: 1.1214 - accuracy: 0.5731 - precision_47: 0.7089 - recall_47: 0.3410 - val_loss: 1.2918 - val_accuracy: 0.4887 - val_precision_47: 0.5727 - val_recall_47: 0.3801
Epoch 6/30
70/70 [==============================] - 15s 210ms/step - loss: 1.0771 - accuracy: 0.5611 - precision_47: 0.7039 - recall_47: 0.3861 - val_loss: 1.2699 - val_accuracy: 0.4932 - val_precision_47: 0.5884 - val_recall_47: 0.3514
Epoch 7/30
70/70 [==============================] - 15s 214ms/step - loss: 1.0111 - accuracy: 0.5999 - precision_47: 0.7318 - recall_47: 0.4402 - val_loss: 1.2735 - val_accuracy: 0.5038 - val_precision_47: 0.5853 - val_recall_47: 0.3831
Epoch 8/30
70/70 [==============================] - 15s 214ms/step - loss: 0.8511 - accuracy: 0.6735 - precision_47: 0.7631 - recall_47: 0.5386 - val_loss: 1.2909 - val_accuracy: 0.5128 - val_precision_47: 0.6120 - val_recall_47: 0.3997
Epoch 9/30
70/70 [==============================] - 14s 209ms/step - loss: 0.7976 - accuracy: 0.6884 - precision_47: 0.7971 - recall_47: 0.5722 - val_loss: 1.3177 - val_accuracy: 0.5400 - val_precision_47: 0.5968 - val_recall_47: 0.4465
Epoch 10/30
70/70 [==============================] - 14s 204ms/step - loss: 0.6679 - accuracy: 0.7708 - precision_47: 0.8489 - recall_47: 0.6581 - val_loss: 1.5759 - val_accuracy: 0.4766 - val_precision_47: 0.5224 - val_recall_47: 0.4223
Epoch 11/30
70/70 [==============================] - 15s 210ms/step - loss: 0.6017 - accuracy: 0.7807 - precision_47: 0.8467 - recall_47: 0.7162 - val_loss: 1.4544 - val_accuracy: 0.5204 - val_precision_47: 0.5638 - val_recall_47: 0.4465
Epoch 12/30
70/70 [==============================] - 15s 209ms/step - loss: 0.5115 - accuracy: 0.8207 - precision_47: 0.8783 - recall_47: 0.7660 - val_loss: 1.6528 - val_accuracy: 0.5189 - val_precision_47: 0.5615 - val_recall_47: 0.4887
Epoch 13/30
70/70 [==============================] - 14s 207ms/step - loss: 0.4054 - accuracy: 0.8673 - precision_47: 0.9057 - recall_47: 0.8132 - val_loss: 1.8729 - val_accuracy: 0.4947 - val_precision_47: 0.5245 - val_recall_47: 0.4691
Epoch 14/30
70/70 [==============================] - 15s 209ms/step - loss: 0.3176 - accuracy: 0.8929 - precision_47: 0.9256 - recall_47: 0.8736 - val_loss: 1.8912 - val_accuracy: 0.5083 - val_precision_47: 0.5262 - val_recall_47: 0.4691
Epoch 15/30
70/70 [==============================] - 14s 206ms/step - loss: 0.2719 - accuracy: 0.9176 - precision_47: 0.9378 - recall_47: 0.8943 - val_loss: 2.2091 - val_accuracy: 0.4766 - val_precision_47: 0.4918 - val_recall_47: 0.4510
Epoch 16/30
70/70 [==============================] - 14s 205ms/step - loss: 0.2148 - accuracy: 0.9403 - precision_47: 0.9532 - recall_47: 0.9178 - val_loss: 2.3673 - val_accuracy: 0.5264 - val_precision_47: 0.5396 - val_recall_47: 0.5038
Epoch 17/30
70/70 [==============================] - 14s 208ms/step - loss: 0.1311 - accuracy: 0.9671 - precision_47: 0.9722 - recall_47: 0.9585 - val_loss: 2.7172 - val_accuracy: 0.5264 - val_precision_47: 0.5323 - val_recall_47: 0.5098
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.747133493423462 / Test accuracy: 0.5486111044883728
In [ ]:
history = test_early_stop(path, [16,16,16,16,16],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_55"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_134 (Conv2D)          (None, 254, 254, 16)      448       
_________________________________________________________________
max_pooling2d_118 (MaxPoolin (None, 127, 127, 16)      0         
_________________________________________________________________
conv2d_135 (Conv2D)          (None, 125, 125, 16)      2320      
_________________________________________________________________
max_pooling2d_119 (MaxPoolin (None, 62, 62, 16)        0         
_________________________________________________________________
conv2d_136 (Conv2D)          (None, 60, 60, 16)        2320      
_________________________________________________________________
max_pooling2d_120 (MaxPoolin (None, 30, 30, 16)        0         
_________________________________________________________________
conv2d_137 (Conv2D)          (None, 28, 28, 16)        2320      
_________________________________________________________________
max_pooling2d_121 (MaxPoolin (None, 14, 14, 16)        0         
_________________________________________________________________
conv2d_138 (Conv2D)          (None, 12, 12, 16)        2320      
_________________________________________________________________
max_pooling2d_122 (MaxPoolin (None, 6, 6, 16)          0         
_________________________________________________________________
flatten_48 (Flatten)         (None, 576)               0         
_________________________________________________________________
dense_80 (Dense)             (None, 5)                 2885      
=================================================================
Total params: 12,613
Trainable params: 12,613
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 16s 210ms/step - loss: 1.6004 - accuracy: 0.2353 - precision_48: 0.0000e+00 - recall_48: 0.0000e+00 - val_loss: 1.5861 - val_accuracy: 0.2428 - val_precision_48: 0.0000e+00 - val_recall_48: 0.0000e+00
Epoch 2/30
70/70 [==============================] - 14s 204ms/step - loss: 1.5761 - accuracy: 0.2731 - precision_48: 0.0000e+00 - recall_48: 0.0000e+00 - val_loss: 1.5799 - val_accuracy: 0.2504 - val_precision_48: 0.0000e+00 - val_recall_48: 0.0000e+00
Epoch 3/30
70/70 [==============================] - 14s 203ms/step - loss: 1.5647 - accuracy: 0.2774 - precision_48: 0.2818 - recall_48: 6.2100e-04 - val_loss: 1.4966 - val_accuracy: 0.3560 - val_precision_48: 1.0000 - val_recall_48: 0.0015
Epoch 4/30
70/70 [==============================] - 14s 200ms/step - loss: 1.4523 - accuracy: 0.3882 - precision_48: 0.5176 - recall_48: 0.0284 - val_loss: 1.3792 - val_accuracy: 0.4284 - val_precision_48: 0.6857 - val_recall_48: 0.0724
Epoch 5/30
70/70 [==============================] - 14s 205ms/step - loss: 1.2886 - accuracy: 0.4741 - precision_48: 0.6776 - recall_48: 0.2173 - val_loss: 1.2957 - val_accuracy: 0.5158 - val_precision_48: 0.5906 - val_recall_48: 0.2655
Epoch 6/30
70/70 [==============================] - 14s 205ms/step - loss: 1.2334 - accuracy: 0.5175 - precision_48: 0.6589 - recall_48: 0.2951 - val_loss: 1.2582 - val_accuracy: 0.5083 - val_precision_48: 0.5872 - val_recall_48: 0.3454
Epoch 7/30
70/70 [==============================] - 14s 204ms/step - loss: 1.1481 - accuracy: 0.5439 - precision_48: 0.6726 - recall_48: 0.3538 - val_loss: 1.2300 - val_accuracy: 0.5158 - val_precision_48: 0.6414 - val_recall_48: 0.2941
Epoch 8/30
70/70 [==============================] - 14s 204ms/step - loss: 1.1056 - accuracy: 0.5743 - precision_48: 0.6924 - recall_48: 0.3880 - val_loss: 1.2149 - val_accuracy: 0.5354 - val_precision_48: 0.6349 - val_recall_48: 0.3620
Epoch 9/30
70/70 [==============================] - 14s 203ms/step - loss: 1.0452 - accuracy: 0.5853 - precision_48: 0.6978 - recall_48: 0.4345 - val_loss: 1.1772 - val_accuracy: 0.5581 - val_precision_48: 0.6627 - val_recall_48: 0.4178
Epoch 10/30
70/70 [==============================] - 14s 201ms/step - loss: 1.0319 - accuracy: 0.5916 - precision_48: 0.7131 - recall_48: 0.4502 - val_loss: 1.1934 - val_accuracy: 0.5581 - val_precision_48: 0.6309 - val_recall_48: 0.3635
Epoch 11/30
70/70 [==============================] - 14s 206ms/step - loss: 0.9735 - accuracy: 0.6229 - precision_48: 0.7075 - recall_48: 0.4468 - val_loss: 1.2388 - val_accuracy: 0.5566 - val_precision_48: 0.6239 - val_recall_48: 0.4178
Epoch 12/30
70/70 [==============================] - 14s 208ms/step - loss: 0.9793 - accuracy: 0.6105 - precision_48: 0.7395 - recall_48: 0.4622 - val_loss: 1.1798 - val_accuracy: 0.5551 - val_precision_48: 0.6460 - val_recall_48: 0.3937
Epoch 13/30
70/70 [==============================] - 14s 200ms/step - loss: 0.9086 - accuracy: 0.6375 - precision_48: 0.7352 - recall_48: 0.5224 - val_loss: 1.1961 - val_accuracy: 0.5354 - val_precision_48: 0.6156 - val_recall_48: 0.4178
Epoch 14/30
70/70 [==============================] - 14s 202ms/step - loss: 0.8626 - accuracy: 0.6632 - precision_48: 0.7666 - recall_48: 0.5322 - val_loss: 1.1548 - val_accuracy: 0.5505 - val_precision_48: 0.6667 - val_recall_48: 0.4072
Epoch 15/30
70/70 [==============================] - 14s 205ms/step - loss: 0.8628 - accuracy: 0.6779 - precision_48: 0.7748 - recall_48: 0.5508 - val_loss: 1.2155 - val_accuracy: 0.5777 - val_precision_48: 0.6225 - val_recall_48: 0.4676
Epoch 16/30
70/70 [==============================] - 14s 197ms/step - loss: 0.8496 - accuracy: 0.6882 - precision_48: 0.7698 - recall_48: 0.5668 - val_loss: 1.2152 - val_accuracy: 0.5822 - val_precision_48: 0.6367 - val_recall_48: 0.4917
Epoch 17/30
70/70 [==============================] - 14s 198ms/step - loss: 0.7648 - accuracy: 0.7122 - precision_48: 0.7980 - recall_48: 0.6250 - val_loss: 1.1994 - val_accuracy: 0.5581 - val_precision_48: 0.6094 - val_recall_48: 0.4284
Epoch 18/30
70/70 [==============================] - 14s 204ms/step - loss: 0.7890 - accuracy: 0.7119 - precision_48: 0.7932 - recall_48: 0.5937 - val_loss: 1.2603 - val_accuracy: 0.5822 - val_precision_48: 0.6167 - val_recall_48: 0.4902
Epoch 19/30
70/70 [==============================] - 14s 205ms/step - loss: 0.7241 - accuracy: 0.7327 - precision_48: 0.7874 - recall_48: 0.6479 - val_loss: 1.2617 - val_accuracy: 0.5777 - val_precision_48: 0.6351 - val_recall_48: 0.4962
Epoch 20/30
70/70 [==============================] - 14s 203ms/step - loss: 0.7020 - accuracy: 0.7436 - precision_48: 0.8026 - recall_48: 0.6606 - val_loss: 1.2480 - val_accuracy: 0.5988 - val_precision_48: 0.6468 - val_recall_48: 0.4917
Epoch 21/30
70/70 [==============================] - 14s 203ms/step - loss: 0.6651 - accuracy: 0.7636 - precision_48: 0.8275 - recall_48: 0.6723 - val_loss: 1.3602 - val_accuracy: 0.5385 - val_precision_48: 0.5849 - val_recall_48: 0.4781
Epoch 22/30
70/70 [==============================] - 14s 200ms/step - loss: 0.6072 - accuracy: 0.7799 - precision_48: 0.8569 - recall_48: 0.7013 - val_loss: 1.3283 - val_accuracy: 0.5777 - val_precision_48: 0.6369 - val_recall_48: 0.5370
Epoch 23/30
70/70 [==============================] - 14s 202ms/step - loss: 0.5735 - accuracy: 0.7953 - precision_48: 0.8509 - recall_48: 0.7356 - val_loss: 1.3576 - val_accuracy: 0.5777 - val_precision_48: 0.6138 - val_recall_48: 0.5083
Epoch 24/30
70/70 [==============================] - 14s 202ms/step - loss: 0.4914 - accuracy: 0.8360 - precision_48: 0.8732 - recall_48: 0.7893 - val_loss: 1.4736 - val_accuracy: 0.5777 - val_precision_48: 0.6093 - val_recall_48: 0.5339
Epoch 25/30
70/70 [==============================] - 14s 201ms/step - loss: 0.4802 - accuracy: 0.8265 - precision_48: 0.8748 - recall_48: 0.7828 - val_loss: 1.5054 - val_accuracy: 0.5837 - val_precision_48: 0.6207 - val_recall_48: 0.5430
Epoch 26/30
70/70 [==============================] - 14s 196ms/step - loss: 0.4524 - accuracy: 0.8356 - precision_48: 0.8689 - recall_48: 0.7892 - val_loss: 1.5524 - val_accuracy: 0.5686 - val_precision_48: 0.5865 - val_recall_48: 0.5113
Epoch 27/30
70/70 [==============================] - 14s 199ms/step - loss: 0.4404 - accuracy: 0.8348 - precision_48: 0.8752 - recall_48: 0.7920 - val_loss: 1.6976 - val_accuracy: 0.5626 - val_precision_48: 0.6017 - val_recall_48: 0.5445
Epoch 28/30
70/70 [==============================] - 14s 200ms/step - loss: 0.3775 - accuracy: 0.8698 - precision_48: 0.8994 - recall_48: 0.8375 - val_loss: 1.6973 - val_accuracy: 0.5505 - val_precision_48: 0.5812 - val_recall_48: 0.5234
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 1.5836231708526611 / Test accuracy: 0.5694444179534912
In [ ]:
history = test_early_stop(path, [16,16,16,16,16,16],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_56"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_139 (Conv2D)          (None, 254, 254, 16)      448       
_________________________________________________________________
max_pooling2d_123 (MaxPoolin (None, 127, 127, 16)      0         
_________________________________________________________________
conv2d_140 (Conv2D)          (None, 125, 125, 16)      2320      
_________________________________________________________________
max_pooling2d_124 (MaxPoolin (None, 62, 62, 16)        0         
_________________________________________________________________
conv2d_141 (Conv2D)          (None, 60, 60, 16)        2320      
_________________________________________________________________
max_pooling2d_125 (MaxPoolin (None, 30, 30, 16)        0         
_________________________________________________________________
conv2d_142 (Conv2D)          (None, 28, 28, 16)        2320      
_________________________________________________________________
max_pooling2d_126 (MaxPoolin (None, 14, 14, 16)        0         
_________________________________________________________________
conv2d_143 (Conv2D)          (None, 12, 12, 16)        2320      
_________________________________________________________________
max_pooling2d_127 (MaxPoolin (None, 6, 6, 16)          0         
_________________________________________________________________
conv2d_144 (Conv2D)          (None, 4, 4, 16)          2320      
_________________________________________________________________
max_pooling2d_128 (MaxPoolin (None, 2, 2, 16)          0         
_________________________________________________________________
flatten_49 (Flatten)         (None, 64)                0         
_________________________________________________________________
dense_81 (Dense)             (None, 5)                 325       
=================================================================
Total params: 12,373
Trainable params: 12,373
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 15s 208ms/step - loss: 1.5857 - accuracy: 0.2638 - precision_49: 0.2472 - recall_49: 0.0013 - val_loss: 1.4413 - val_accuracy: 0.4223 - val_precision_49: 0.5667 - val_recall_49: 0.0256
Epoch 2/30
70/70 [==============================] - 14s 201ms/step - loss: 1.4445 - accuracy: 0.4089 - precision_49: 0.6407 - recall_49: 0.0756 - val_loss: 1.4618 - val_accuracy: 0.4253 - val_precision_49: 0.5000 - val_recall_49: 0.0045
Epoch 3/30
70/70 [==============================] - 14s 199ms/step - loss: 1.3890 - accuracy: 0.4370 - precision_49: 0.6844 - recall_49: 0.1197 - val_loss: 1.3431 - val_accuracy: 0.4872 - val_precision_49: 0.6667 - val_recall_49: 0.1629
Epoch 4/30
70/70 [==============================] - 14s 201ms/step - loss: 1.2877 - accuracy: 0.5097 - precision_49: 0.6554 - recall_49: 0.2315 - val_loss: 1.2865 - val_accuracy: 0.4902 - val_precision_49: 0.6553 - val_recall_49: 0.2609
Epoch 5/30
70/70 [==============================] - 14s 201ms/step - loss: 1.2417 - accuracy: 0.5272 - precision_49: 0.6643 - recall_49: 0.3083 - val_loss: 1.3197 - val_accuracy: 0.4917 - val_precision_49: 0.5918 - val_recall_49: 0.3695
Epoch 6/30
70/70 [==============================] - 14s 203ms/step - loss: 1.2219 - accuracy: 0.5250 - precision_49: 0.6517 - recall_49: 0.3427 - val_loss: 1.2198 - val_accuracy: 0.5370 - val_precision_49: 0.6434 - val_recall_49: 0.3756
Epoch 7/30
70/70 [==============================] - 14s 201ms/step - loss: 1.1182 - accuracy: 0.5862 - precision_49: 0.6877 - recall_49: 0.3993 - val_loss: 1.2223 - val_accuracy: 0.5385 - val_precision_49: 0.6601 - val_recall_49: 0.3017
Epoch 8/30
70/70 [==============================] - 14s 202ms/step - loss: 1.1495 - accuracy: 0.5548 - precision_49: 0.6778 - recall_49: 0.3771 - val_loss: 1.1891 - val_accuracy: 0.5460 - val_precision_49: 0.6632 - val_recall_49: 0.3861
Epoch 9/30
70/70 [==============================] - 14s 193ms/step - loss: 1.0919 - accuracy: 0.5738 - precision_49: 0.7021 - recall_49: 0.4165 - val_loss: 1.2130 - val_accuracy: 0.5430 - val_precision_49: 0.6491 - val_recall_49: 0.3710
Epoch 10/30
70/70 [==============================] - 14s 199ms/step - loss: 1.0171 - accuracy: 0.6206 - precision_49: 0.7223 - recall_49: 0.4612 - val_loss: 1.2128 - val_accuracy: 0.5686 - val_precision_49: 0.6288 - val_recall_49: 0.3756
Epoch 11/30
70/70 [==============================] - 14s 200ms/step - loss: 1.0034 - accuracy: 0.6193 - precision_49: 0.7504 - recall_49: 0.4476 - val_loss: 1.2217 - val_accuracy: 0.5551 - val_precision_49: 0.6271 - val_recall_49: 0.3982
Epoch 12/30
70/70 [==============================] - 14s 203ms/step - loss: 0.9629 - accuracy: 0.6300 - precision_49: 0.7367 - recall_49: 0.4771 - val_loss: 1.1509 - val_accuracy: 0.5641 - val_precision_49: 0.6774 - val_recall_49: 0.3801
Epoch 13/30
70/70 [==============================] - 14s 197ms/step - loss: 0.9209 - accuracy: 0.6455 - precision_49: 0.7574 - recall_49: 0.5122 - val_loss: 1.2238 - val_accuracy: 0.5143 - val_precision_49: 0.6423 - val_recall_49: 0.3439
Epoch 14/30
70/70 [==============================] - 14s 201ms/step - loss: 0.9489 - accuracy: 0.6272 - precision_49: 0.7462 - recall_49: 0.4950 - val_loss: 1.1535 - val_accuracy: 0.5626 - val_precision_49: 0.6388 - val_recall_49: 0.4374
Epoch 15/30
70/70 [==============================] - 14s 199ms/step - loss: 0.8740 - accuracy: 0.6588 - precision_49: 0.7503 - recall_49: 0.5500 - val_loss: 1.1226 - val_accuracy: 0.6018 - val_precision_49: 0.6740 - val_recall_49: 0.5083
Epoch 16/30
70/70 [==============================] - 14s 197ms/step - loss: 0.8406 - accuracy: 0.6815 - precision_49: 0.7701 - recall_49: 0.5641 - val_loss: 1.2007 - val_accuracy: 0.5354 - val_precision_49: 0.6299 - val_recall_49: 0.4133
Epoch 17/30
70/70 [==============================] - 14s 200ms/step - loss: 0.8029 - accuracy: 0.6957 - precision_49: 0.7816 - recall_49: 0.5964 - val_loss: 1.1439 - val_accuracy: 0.5762 - val_precision_49: 0.6562 - val_recall_49: 0.4434
Epoch 18/30
70/70 [==============================] - 14s 198ms/step - loss: 0.7620 - accuracy: 0.7230 - precision_49: 0.7934 - recall_49: 0.6103 - val_loss: 1.1579 - val_accuracy: 0.5822 - val_precision_49: 0.6499 - val_recall_49: 0.5068
Epoch 19/30
70/70 [==============================] - 14s 201ms/step - loss: 0.7853 - accuracy: 0.6933 - precision_49: 0.7693 - recall_49: 0.6017 - val_loss: 1.1590 - val_accuracy: 0.5822 - val_precision_49: 0.6534 - val_recall_49: 0.4947
Epoch 20/30
70/70 [==============================] - 14s 200ms/step - loss: 0.7121 - accuracy: 0.7236 - precision_49: 0.8041 - recall_49: 0.6490 - val_loss: 1.1685 - val_accuracy: 0.5701 - val_precision_49: 0.6329 - val_recall_49: 0.4811
Epoch 21/30
70/70 [==============================] - 14s 198ms/step - loss: 0.6659 - accuracy: 0.7562 - precision_49: 0.8132 - recall_49: 0.6826 - val_loss: 1.1815 - val_accuracy: 0.5566 - val_precision_49: 0.6362 - val_recall_49: 0.4827
Epoch 22/30
70/70 [==============================] - 14s 192ms/step - loss: 0.6539 - accuracy: 0.7588 - precision_49: 0.8065 - recall_49: 0.6842 - val_loss: 1.2347 - val_accuracy: 0.5701 - val_precision_49: 0.6158 - val_recall_49: 0.4932
Epoch 23/30
70/70 [==============================] - 14s 198ms/step - loss: 0.5759 - accuracy: 0.7808 - precision_49: 0.8300 - recall_49: 0.7226 - val_loss: 1.2562 - val_accuracy: 0.5973 - val_precision_49: 0.6385 - val_recall_49: 0.5354
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 1.1179097890853882 / Test accuracy: 0.6284722089767456
In [ ]:
history = test_early_stop(path, [64],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_35"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_67 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
max_pooling2d_23 (MaxPooling (None, 127, 127, 64)      0         
_________________________________________________________________
flatten_34 (Flatten)         (None, 1032256)           0         
_________________________________________________________________
dense_50 (Dense)             (None, 5)                 5161285   
=================================================================
Total params: 5,163,077
Trainable params: 5,163,077
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 13s 180ms/step - loss: 13.8639 - accuracy: 0.2561 - precision_34: 0.2233 - recall_34: 0.1252 - val_loss: 1.5478 - val_accuracy: 0.3514 - val_precision_34: 0.4643 - val_recall_34: 0.0196
Epoch 2/30
70/70 [==============================] - 12s 173ms/step - loss: 1.2423 - accuracy: 0.5735 - precision_34: 0.7824 - recall_34: 0.1616 - val_loss: 1.4316 - val_accuracy: 0.4178 - val_precision_34: 0.5459 - val_recall_34: 0.1523
Epoch 3/30
70/70 [==============================] - 12s 172ms/step - loss: 0.4951 - accuracy: 0.8781 - precision_34: 0.9650 - recall_34: 0.7286 - val_loss: 1.5686 - val_accuracy: 0.4525 - val_precision_34: 0.5150 - val_recall_34: 0.2851
Epoch 4/30
70/70 [==============================] - 12s 174ms/step - loss: 0.1608 - accuracy: 0.9741 - precision_34: 0.9902 - recall_34: 0.9432 - val_loss: 1.7922 - val_accuracy: 0.4585 - val_precision_34: 0.4859 - val_recall_34: 0.3650
Epoch 5/30
70/70 [==============================] - 12s 172ms/step - loss: 0.0591 - accuracy: 0.9943 - precision_34: 0.9962 - recall_34: 0.9931 - val_loss: 1.9635 - val_accuracy: 0.4600 - val_precision_34: 0.4879 - val_recall_34: 0.3967
Epoch 6/30
70/70 [==============================] - 12s 173ms/step - loss: 0.0411 - accuracy: 0.9964 - precision_34: 0.9970 - recall_34: 0.9948 - val_loss: 1.9916 - val_accuracy: 0.4811 - val_precision_34: 0.4940 - val_recall_34: 0.4314
Epoch 7/30
70/70 [==============================] - 12s 171ms/step - loss: 0.0185 - accuracy: 0.9985 - precision_34: 0.9985 - recall_34: 0.9985 - val_loss: 2.0976 - val_accuracy: 0.4736 - val_precision_34: 0.4947 - val_recall_34: 0.4193
Epoch 8/30
70/70 [==============================] - 12s 173ms/step - loss: 0.0279 - accuracy: 0.9974 - precision_34: 0.9974 - recall_34: 0.9974 - val_loss: 1.9681 - val_accuracy: 0.4751 - val_precision_34: 0.4813 - val_recall_34: 0.4087
Epoch 9/30
70/70 [==============================] - 12s 174ms/step - loss: 0.0184 - accuracy: 0.9980 - precision_34: 0.9980 - recall_34: 0.9980 - val_loss: 1.9760 - val_accuracy: 0.4630 - val_precision_34: 0.4866 - val_recall_34: 0.4103
Epoch 10/30
70/70 [==============================] - 12s 174ms/step - loss: 0.0126 - accuracy: 0.9991 - precision_34: 0.9991 - recall_34: 0.9991 - val_loss: 2.4738 - val_accuracy: 0.4495 - val_precision_34: 0.4712 - val_recall_34: 0.4193
Epoch 11/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0112 - accuracy: 0.9984 - precision_34: 0.9984 - recall_34: 0.9984 - val_loss: 2.1488 - val_accuracy: 0.4721 - val_precision_34: 0.4983 - val_recall_34: 0.4344
Epoch 12/30
70/70 [==============================] - 12s 175ms/step - loss: 0.0251 - accuracy: 0.9980 - precision_34: 0.9980 - recall_34: 0.9980 - val_loss: 2.1921 - val_accuracy: 0.4721 - val_precision_34: 0.4932 - val_recall_34: 0.4359
Epoch 13/30
70/70 [==============================] - 12s 172ms/step - loss: 0.0202 - accuracy: 0.9968 - precision_34: 0.9968 - recall_34: 0.9968 - val_loss: 2.1128 - val_accuracy: 0.4646 - val_precision_34: 0.4894 - val_recall_34: 0.4178
Epoch 14/30
70/70 [==============================] - 12s 173ms/step - loss: 0.0138 - accuracy: 0.9973 - precision_34: 0.9983 - recall_34: 0.9973 - val_loss: 2.3773 - val_accuracy: 0.4615 - val_precision_34: 0.4746 - val_recall_34: 0.4223
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.1021664142608643 / Test accuracy: 0.5277777910232544
In [ ]:
history = test_early_stop(path, [64,64],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_36"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_68 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
max_pooling2d_24 (MaxPooling (None, 127, 127, 64)      0         
_________________________________________________________________
conv2d_69 (Conv2D)           (None, 125, 125, 64)      36928     
_________________________________________________________________
max_pooling2d_25 (MaxPooling (None, 62, 62, 64)        0         
_________________________________________________________________
flatten_35 (Flatten)         (None, 246016)            0         
_________________________________________________________________
dense_51 (Dense)             (None, 5)                 1230085   
=================================================================
Total params: 1,268,805
Trainable params: 1,268,805
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 182ms/step - loss: 2.2902 - accuracy: 0.2844 - precision_35: 0.3150 - recall_35: 0.0574 - val_loss: 1.4736 - val_accuracy: 0.3363 - val_precision_35: 0.6355 - val_recall_35: 0.1026
Epoch 2/30
70/70 [==============================] - 12s 175ms/step - loss: 1.4184 - accuracy: 0.4452 - precision_35: 0.6053 - recall_35: 0.1191 - val_loss: 1.3726 - val_accuracy: 0.4495 - val_precision_35: 0.6389 - val_recall_35: 0.1388
Epoch 3/30
70/70 [==============================] - 12s 176ms/step - loss: 1.1026 - accuracy: 0.5771 - precision_35: 0.7434 - recall_35: 0.3418 - val_loss: 1.3936 - val_accuracy: 0.4630 - val_precision_35: 0.5455 - val_recall_35: 0.2896
Epoch 4/30
70/70 [==============================] - 12s 175ms/step - loss: 0.6958 - accuracy: 0.7541 - precision_35: 0.8559 - recall_35: 0.6051 - val_loss: 1.6070 - val_accuracy: 0.4359 - val_precision_35: 0.5125 - val_recall_35: 0.3409
Epoch 5/30
70/70 [==============================] - 12s 175ms/step - loss: 0.3358 - accuracy: 0.9166 - precision_35: 0.9577 - recall_35: 0.8553 - val_loss: 2.0741 - val_accuracy: 0.4404 - val_precision_35: 0.4710 - val_recall_35: 0.3922
Epoch 6/30
70/70 [==============================] - 12s 173ms/step - loss: 0.1366 - accuracy: 0.9748 - precision_35: 0.9830 - recall_35: 0.9590 - val_loss: 2.3883 - val_accuracy: 0.4223 - val_precision_35: 0.4518 - val_recall_35: 0.3891
Epoch 7/30
70/70 [==============================] - 12s 174ms/step - loss: 0.0615 - accuracy: 0.9938 - precision_35: 0.9951 - recall_35: 0.9891 - val_loss: 2.4764 - val_accuracy: 0.4314 - val_precision_35: 0.4514 - val_recall_35: 0.3997
Epoch 8/30
70/70 [==============================] - 12s 173ms/step - loss: 0.0402 - accuracy: 0.9966 - precision_35: 0.9966 - recall_35: 0.9947 - val_loss: 3.0094 - val_accuracy: 0.4178 - val_precision_35: 0.4345 - val_recall_35: 0.3952
Epoch 9/30
70/70 [==============================] - 12s 172ms/step - loss: 0.0415 - accuracy: 0.9963 - precision_35: 0.9963 - recall_35: 0.9949 - val_loss: 3.1946 - val_accuracy: 0.4103 - val_precision_35: 0.4194 - val_recall_35: 0.3922
Epoch 10/30
70/70 [==============================] - 12s 173ms/step - loss: 0.0635 - accuracy: 0.9945 - precision_35: 0.9967 - recall_35: 0.9945 - val_loss: 3.0575 - val_accuracy: 0.4465 - val_precision_35: 0.4548 - val_recall_35: 0.4253
Epoch 11/30
70/70 [==============================] - 12s 167ms/step - loss: 0.0151 - accuracy: 0.9982 - precision_35: 0.9982 - recall_35: 0.9982 - val_loss: 3.2909 - val_accuracy: 0.4253 - val_precision_35: 0.4332 - val_recall_35: 0.4057
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.93526029586792 / Test accuracy: 0.4930555522441864
In [ ]:
history = test_early_stop(path, [64,64,64],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_37"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_70 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
max_pooling2d_26 (MaxPooling (None, 127, 127, 64)      0         
_________________________________________________________________
conv2d_71 (Conv2D)           (None, 125, 125, 64)      36928     
_________________________________________________________________
max_pooling2d_27 (MaxPooling (None, 62, 62, 64)        0         
_________________________________________________________________
conv2d_72 (Conv2D)           (None, 60, 60, 64)        36928     
_________________________________________________________________
max_pooling2d_28 (MaxPooling (None, 30, 30, 64)        0         
_________________________________________________________________
flatten_36 (Flatten)         (None, 57600)             0         
_________________________________________________________________
dense_52 (Dense)             (None, 5)                 288005    
=================================================================
Total params: 363,653
Trainable params: 363,653
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 13s 184ms/step - loss: 1.7196 - accuracy: 0.2876 - precision_36: 0.3247 - recall_36: 0.0346 - val_loss: 1.4263 - val_accuracy: 0.4495 - val_precision_36: 0.6118 - val_recall_36: 0.1403
Epoch 2/30
70/70 [==============================] - 12s 174ms/step - loss: 1.3610 - accuracy: 0.4586 - precision_36: 0.6302 - recall_36: 0.1787 - val_loss: 1.3607 - val_accuracy: 0.4570 - val_precision_36: 0.5568 - val_recall_36: 0.1554
Epoch 3/30
70/70 [==============================] - 12s 174ms/step - loss: 1.2196 - accuracy: 0.5291 - precision_36: 0.6534 - recall_36: 0.2846 - val_loss: 1.3672 - val_accuracy: 0.5068 - val_precision_36: 0.5481 - val_recall_36: 0.3183
Epoch 4/30
70/70 [==============================] - 12s 173ms/step - loss: 1.0214 - accuracy: 0.6148 - precision_36: 0.7331 - recall_36: 0.4528 - val_loss: 1.3473 - val_accuracy: 0.4872 - val_precision_36: 0.5758 - val_recall_36: 0.3092
Epoch 5/30
70/70 [==============================] - 12s 176ms/step - loss: 0.8521 - accuracy: 0.6910 - precision_36: 0.7798 - recall_36: 0.5375 - val_loss: 1.4636 - val_accuracy: 0.4947 - val_precision_36: 0.5466 - val_recall_36: 0.3801
Epoch 6/30
70/70 [==============================] - 12s 176ms/step - loss: 0.5686 - accuracy: 0.8008 - precision_36: 0.8787 - recall_36: 0.7324 - val_loss: 1.8346 - val_accuracy: 0.5023 - val_precision_36: 0.5476 - val_recall_36: 0.4600
Epoch 7/30
70/70 [==============================] - 12s 175ms/step - loss: 0.3338 - accuracy: 0.8876 - precision_36: 0.9198 - recall_36: 0.8646 - val_loss: 1.9499 - val_accuracy: 0.4947 - val_precision_36: 0.5214 - val_recall_36: 0.4585
Epoch 8/30
70/70 [==============================] - 12s 175ms/step - loss: 0.1872 - accuracy: 0.9417 - precision_36: 0.9640 - recall_36: 0.9305 - val_loss: 2.7189 - val_accuracy: 0.5023 - val_precision_36: 0.5088 - val_recall_36: 0.4796
Epoch 9/30
70/70 [==============================] - 12s 175ms/step - loss: 0.1015 - accuracy: 0.9749 - precision_36: 0.9789 - recall_36: 0.9707 - val_loss: 3.0702 - val_accuracy: 0.4872 - val_precision_36: 0.4921 - val_recall_36: 0.4706
Epoch 10/30
70/70 [==============================] - 12s 175ms/step - loss: 0.0530 - accuracy: 0.9885 - precision_36: 0.9891 - recall_36: 0.9869 - val_loss: 3.4882 - val_accuracy: 0.4857 - val_precision_36: 0.4969 - val_recall_36: 0.4796
Epoch 11/30
70/70 [==============================] - 12s 179ms/step - loss: 0.0508 - accuracy: 0.9942 - precision_36: 0.9952 - recall_36: 0.9936 - val_loss: 3.2652 - val_accuracy: 0.5038 - val_precision_36: 0.5140 - val_recall_36: 0.4992
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.255632162094116 / Test accuracy: 0.5208333134651184
In [ ]:
history = test_early_stop(path, [64,64,64,64],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_38"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_73 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
max_pooling2d_29 (MaxPooling (None, 127, 127, 64)      0         
_________________________________________________________________
conv2d_74 (Conv2D)           (None, 125, 125, 64)      36928     
_________________________________________________________________
max_pooling2d_30 (MaxPooling (None, 62, 62, 64)        0         
_________________________________________________________________
conv2d_75 (Conv2D)           (None, 60, 60, 64)        36928     
_________________________________________________________________
max_pooling2d_31 (MaxPooling (None, 30, 30, 64)        0         
_________________________________________________________________
conv2d_76 (Conv2D)           (None, 28, 28, 64)        36928     
_________________________________________________________________
max_pooling2d_32 (MaxPooling (None, 14, 14, 64)        0         
_________________________________________________________________
flatten_37 (Flatten)         (None, 12544)             0         
_________________________________________________________________
dense_53 (Dense)             (None, 5)                 62725     
=================================================================
Total params: 175,301
Trainable params: 175,301
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 13s 180ms/step - loss: 1.5486 - accuracy: 0.3091 - precision_37: 0.5003 - recall_37: 0.0262 - val_loss: 1.4620 - val_accuracy: 0.4268 - val_precision_37: 0.6667 - val_recall_37: 0.0030
Epoch 2/30
70/70 [==============================] - 12s 177ms/step - loss: 1.3711 - accuracy: 0.4505 - precision_37: 0.6276 - recall_37: 0.1641 - val_loss: 1.3556 - val_accuracy: 0.4495 - val_precision_37: 0.6027 - val_recall_37: 0.2036
Epoch 3/30
70/70 [==============================] - 12s 178ms/step - loss: 1.2247 - accuracy: 0.5352 - precision_37: 0.6582 - recall_37: 0.2910 - val_loss: 1.2449 - val_accuracy: 0.5173 - val_precision_37: 0.6617 - val_recall_37: 0.2655
Epoch 4/30
70/70 [==============================] - 12s 174ms/step - loss: 1.1219 - accuracy: 0.5478 - precision_37: 0.7203 - recall_37: 0.3624 - val_loss: 1.2260 - val_accuracy: 0.5204 - val_precision_37: 0.6419 - val_recall_37: 0.3002
Epoch 5/30
70/70 [==============================] - 12s 175ms/step - loss: 1.0084 - accuracy: 0.6116 - precision_37: 0.7307 - recall_37: 0.4210 - val_loss: 1.2749 - val_accuracy: 0.5309 - val_precision_37: 0.6160 - val_recall_37: 0.3605
Epoch 6/30
70/70 [==============================] - 12s 176ms/step - loss: 0.8091 - accuracy: 0.6968 - precision_37: 0.7813 - recall_37: 0.5787 - val_loss: 1.2307 - val_accuracy: 0.5520 - val_precision_37: 0.6345 - val_recall_37: 0.4268
Epoch 7/30
70/70 [==============================] - 12s 176ms/step - loss: 0.6438 - accuracy: 0.7705 - precision_37: 0.8501 - recall_37: 0.6769 - val_loss: 1.4047 - val_accuracy: 0.5204 - val_precision_37: 0.5720 - val_recall_37: 0.4314
Epoch 8/30
70/70 [==============================] - 12s 175ms/step - loss: 0.4680 - accuracy: 0.8310 - precision_37: 0.8834 - recall_37: 0.7808 - val_loss: 1.6142 - val_accuracy: 0.5053 - val_precision_37: 0.5505 - val_recall_37: 0.4525
Epoch 9/30
70/70 [==============================] - 12s 175ms/step - loss: 0.3250 - accuracy: 0.8965 - precision_37: 0.9196 - recall_37: 0.8603 - val_loss: 2.1664 - val_accuracy: 0.4691 - val_precision_37: 0.4890 - val_recall_37: 0.4374
Epoch 10/30
70/70 [==============================] - 12s 175ms/step - loss: 0.2095 - accuracy: 0.9334 - precision_37: 0.9470 - recall_37: 0.9196 - val_loss: 2.2970 - val_accuracy: 0.5249 - val_precision_37: 0.5361 - val_recall_37: 0.5038
Epoch 11/30
70/70 [==============================] - 12s 175ms/step - loss: 0.1536 - accuracy: 0.9547 - precision_37: 0.9630 - recall_37: 0.9449 - val_loss: 2.8976 - val_accuracy: 0.5143 - val_precision_37: 0.5253 - val_recall_37: 0.5008
Epoch 12/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0859 - accuracy: 0.9799 - precision_37: 0.9850 - recall_37: 0.9786 - val_loss: 3.3267 - val_accuracy: 0.5023 - val_precision_37: 0.5054 - val_recall_37: 0.4932
Epoch 13/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0431 - accuracy: 0.9925 - precision_37: 0.9934 - recall_37: 0.9916 - val_loss: 3.5607 - val_accuracy: 0.4947 - val_precision_37: 0.5093 - val_recall_37: 0.4932
Epoch 14/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0689 - accuracy: 0.9846 - precision_37: 0.9869 - recall_37: 0.9835 - val_loss: 3.1959 - val_accuracy: 0.5264 - val_precision_37: 0.5343 - val_recall_37: 0.5173
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.244446039199829 / Test accuracy: 0.5763888955116272
In [ ]:
history = test_early_stop(path, [64,64,64,64,64],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_39"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_77 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
max_pooling2d_33 (MaxPooling (None, 127, 127, 64)      0         
_________________________________________________________________
conv2d_78 (Conv2D)           (None, 125, 125, 64)      36928     
_________________________________________________________________
max_pooling2d_34 (MaxPooling (None, 62, 62, 64)        0         
_________________________________________________________________
conv2d_79 (Conv2D)           (None, 60, 60, 64)        36928     
_________________________________________________________________
max_pooling2d_35 (MaxPooling (None, 30, 30, 64)        0         
_________________________________________________________________
conv2d_80 (Conv2D)           (None, 28, 28, 64)        36928     
_________________________________________________________________
max_pooling2d_36 (MaxPooling (None, 14, 14, 64)        0         
_________________________________________________________________
conv2d_81 (Conv2D)           (None, 12, 12, 64)        36928     
_________________________________________________________________
max_pooling2d_37 (MaxPooling (None, 6, 6, 64)          0         
_________________________________________________________________
flatten_38 (Flatten)         (None, 2304)              0         
_________________________________________________________________
dense_54 (Dense)             (None, 5)                 11525     
=================================================================
Total params: 161,029
Trainable params: 161,029
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 186ms/step - loss: 1.5680 - accuracy: 0.2798 - precision_38: 0.3930 - recall_38: 0.0203 - val_loss: 1.4179 - val_accuracy: 0.4148 - val_precision_38: 0.6489 - val_recall_38: 0.0920
Epoch 2/30
70/70 [==============================] - 12s 176ms/step - loss: 1.3723 - accuracy: 0.4448 - precision_38: 0.5905 - recall_38: 0.1794 - val_loss: 1.4081 - val_accuracy: 0.4510 - val_precision_38: 0.6226 - val_recall_38: 0.0995
Epoch 3/30
70/70 [==============================] - 12s 175ms/step - loss: 1.3235 - accuracy: 0.4723 - precision_38: 0.6565 - recall_38: 0.2052 - val_loss: 1.3289 - val_accuracy: 0.5249 - val_precision_38: 0.6750 - val_recall_38: 0.0814
Epoch 4/30
70/70 [==============================] - 12s 172ms/step - loss: 1.2274 - accuracy: 0.5373 - precision_38: 0.6685 - recall_38: 0.2718 - val_loss: 1.2460 - val_accuracy: 0.5234 - val_precision_38: 0.6655 - val_recall_38: 0.2911
Epoch 5/30
70/70 [==============================] - 12s 176ms/step - loss: 1.1312 - accuracy: 0.5690 - precision_38: 0.7066 - recall_38: 0.3608 - val_loss: 1.2747 - val_accuracy: 0.4962 - val_precision_38: 0.6339 - val_recall_38: 0.2821
Epoch 6/30
70/70 [==============================] - 12s 176ms/step - loss: 1.0487 - accuracy: 0.5848 - precision_38: 0.7162 - recall_38: 0.4250 - val_loss: 1.2345 - val_accuracy: 0.5279 - val_precision_38: 0.6272 - val_recall_38: 0.3198
Epoch 7/30
70/70 [==============================] - 12s 176ms/step - loss: 1.0034 - accuracy: 0.6262 - precision_38: 0.7217 - recall_38: 0.4579 - val_loss: 1.1808 - val_accuracy: 0.5671 - val_precision_38: 0.6564 - val_recall_38: 0.4495
Epoch 8/30
70/70 [==============================] - 12s 176ms/step - loss: 0.8905 - accuracy: 0.6496 - precision_38: 0.7457 - recall_38: 0.5314 - val_loss: 1.1846 - val_accuracy: 0.5551 - val_precision_38: 0.6128 - val_recall_38: 0.4630
Epoch 9/30
70/70 [==============================] - 12s 176ms/step - loss: 0.7976 - accuracy: 0.6859 - precision_38: 0.7674 - recall_38: 0.5965 - val_loss: 1.1632 - val_accuracy: 0.5671 - val_precision_38: 0.6508 - val_recall_38: 0.4947
Epoch 10/30
70/70 [==============================] - 12s 175ms/step - loss: 0.7227 - accuracy: 0.7320 - precision_38: 0.8071 - recall_38: 0.6275 - val_loss: 1.4173 - val_accuracy: 0.5626 - val_precision_38: 0.6133 - val_recall_38: 0.5143
Epoch 11/30
70/70 [==============================] - 12s 178ms/step - loss: 0.6576 - accuracy: 0.7561 - precision_38: 0.8166 - recall_38: 0.6825 - val_loss: 1.3905 - val_accuracy: 0.5596 - val_precision_38: 0.6047 - val_recall_38: 0.5098
Epoch 12/30
70/70 [==============================] - 12s 176ms/step - loss: 0.4974 - accuracy: 0.8265 - precision_38: 0.8674 - recall_38: 0.7729 - val_loss: 1.3534 - val_accuracy: 0.5943 - val_precision_38: 0.6414 - val_recall_38: 0.5370
Epoch 13/30
70/70 [==============================] - 12s 175ms/step - loss: 0.3946 - accuracy: 0.8593 - precision_38: 0.8925 - recall_38: 0.8210 - val_loss: 1.4609 - val_accuracy: 0.5837 - val_precision_38: 0.6126 - val_recall_38: 0.5294
Epoch 14/30
70/70 [==============================] - 12s 174ms/step - loss: 0.3140 - accuracy: 0.8866 - precision_38: 0.9101 - recall_38: 0.8614 - val_loss: 1.6428 - val_accuracy: 0.5475 - val_precision_38: 0.5828 - val_recall_38: 0.5204
Epoch 15/30
70/70 [==============================] - 12s 175ms/step - loss: 0.2203 - accuracy: 0.9245 - precision_38: 0.9442 - recall_38: 0.9087 - val_loss: 2.1056 - val_accuracy: 0.5641 - val_precision_38: 0.5790 - val_recall_38: 0.5415
Epoch 16/30
70/70 [==============================] - 12s 176ms/step - loss: 0.1819 - accuracy: 0.9389 - precision_38: 0.9551 - recall_38: 0.9318 - val_loss: 2.1271 - val_accuracy: 0.5611 - val_precision_38: 0.5723 - val_recall_38: 0.5490
Epoch 17/30
70/70 [==============================] - 12s 176ms/step - loss: 0.2132 - accuracy: 0.9325 - precision_38: 0.9387 - recall_38: 0.9191 - val_loss: 2.2186 - val_accuracy: 0.5400 - val_precision_38: 0.5550 - val_recall_38: 0.5249
Epoch 18/30
70/70 [==============================] - 12s 175ms/step - loss: 0.1633 - accuracy: 0.9477 - precision_38: 0.9595 - recall_38: 0.9417 - val_loss: 2.3126 - val_accuracy: 0.5400 - val_precision_38: 0.5468 - val_recall_38: 0.5204
Epoch 19/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0644 - accuracy: 0.9844 - precision_38: 0.9865 - recall_38: 0.9803 - val_loss: 2.6955 - val_accuracy: 0.5566 - val_precision_38: 0.5692 - val_recall_38: 0.5460
Epoch 20/30
70/70 [==============================] - 12s 168ms/step - loss: 0.0544 - accuracy: 0.9911 - precision_38: 0.9912 - recall_38: 0.9898 - val_loss: 3.0839 - val_accuracy: 0.5686 - val_precision_38: 0.5767 - val_recall_38: 0.5611
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.828472852706909 / Test accuracy: 0.6041666865348816
In [ ]:
history = test_early_stop(path, [64,64,64,64,64,64],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_40"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_82 (Conv2D)           (None, 254, 254, 64)      1792      
_________________________________________________________________
max_pooling2d_38 (MaxPooling (None, 127, 127, 64)      0         
_________________________________________________________________
conv2d_83 (Conv2D)           (None, 125, 125, 64)      36928     
_________________________________________________________________
max_pooling2d_39 (MaxPooling (None, 62, 62, 64)        0         
_________________________________________________________________
conv2d_84 (Conv2D)           (None, 60, 60, 64)        36928     
_________________________________________________________________
max_pooling2d_40 (MaxPooling (None, 30, 30, 64)        0         
_________________________________________________________________
conv2d_85 (Conv2D)           (None, 28, 28, 64)        36928     
_________________________________________________________________
max_pooling2d_41 (MaxPooling (None, 14, 14, 64)        0         
_________________________________________________________________
conv2d_86 (Conv2D)           (None, 12, 12, 64)        36928     
_________________________________________________________________
max_pooling2d_42 (MaxPooling (None, 6, 6, 64)          0         
_________________________________________________________________
conv2d_87 (Conv2D)           (None, 4, 4, 64)          36928     
_________________________________________________________________
max_pooling2d_43 (MaxPooling (None, 2, 2, 64)          0         
_________________________________________________________________
flatten_39 (Flatten)         (None, 256)               0         
_________________________________________________________________
dense_55 (Dense)             (None, 5)                 1285      
=================================================================
Total params: 187,717
Trainable params: 187,717
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 13s 180ms/step - loss: 1.5982 - accuracy: 0.2424 - precision_39: 0.1153 - recall_39: 0.0022 - val_loss: 1.4612 - val_accuracy: 0.4057 - val_precision_39: 0.5057 - val_recall_39: 0.1342
Epoch 2/30
70/70 [==============================] - 12s 174ms/step - loss: 1.4506 - accuracy: 0.3991 - precision_39: 0.5418 - recall_39: 0.0950 - val_loss: 1.3574 - val_accuracy: 0.4751 - val_precision_39: 0.5764 - val_recall_39: 0.1991
Epoch 3/30
70/70 [==============================] - 12s 175ms/step - loss: 1.3452 - accuracy: 0.4664 - precision_39: 0.6141 - recall_39: 0.1866 - val_loss: 1.3347 - val_accuracy: 0.4706 - val_precision_39: 0.5905 - val_recall_39: 0.1870
Epoch 4/30
70/70 [==============================] - 12s 176ms/step - loss: 1.2426 - accuracy: 0.5238 - precision_39: 0.6428 - recall_39: 0.2714 - val_loss: 1.2553 - val_accuracy: 0.5173 - val_precision_39: 0.6640 - val_recall_39: 0.2474
Epoch 5/30
70/70 [==============================] - 12s 170ms/step - loss: 1.1908 - accuracy: 0.5117 - precision_39: 0.6715 - recall_39: 0.3304 - val_loss: 1.2431 - val_accuracy: 0.5249 - val_precision_39: 0.6402 - val_recall_39: 0.3650
Epoch 6/30
70/70 [==============================] - 12s 177ms/step - loss: 1.1177 - accuracy: 0.5441 - precision_39: 0.6769 - recall_39: 0.3706 - val_loss: 1.1764 - val_accuracy: 0.5611 - val_precision_39: 0.6494 - val_recall_39: 0.4359
Epoch 7/30
70/70 [==============================] - 12s 174ms/step - loss: 1.0495 - accuracy: 0.5880 - precision_39: 0.7041 - recall_39: 0.4536 - val_loss: 1.1257 - val_accuracy: 0.5928 - val_precision_39: 0.6673 - val_recall_39: 0.4932
Epoch 8/30
70/70 [==============================] - 12s 174ms/step - loss: 0.9066 - accuracy: 0.6431 - precision_39: 0.7315 - recall_39: 0.5136 - val_loss: 1.1288 - val_accuracy: 0.5701 - val_precision_39: 0.6981 - val_recall_39: 0.3906
Epoch 9/30
70/70 [==============================] - 12s 176ms/step - loss: 0.8633 - accuracy: 0.6639 - precision_39: 0.7685 - recall_39: 0.5643 - val_loss: 1.1284 - val_accuracy: 0.5641 - val_precision_39: 0.6815 - val_recall_39: 0.4615
Epoch 10/30
70/70 [==============================] - 12s 174ms/step - loss: 0.8026 - accuracy: 0.6966 - precision_39: 0.7788 - recall_39: 0.5885 - val_loss: 1.2125 - val_accuracy: 0.5913 - val_precision_39: 0.6470 - val_recall_39: 0.5445
Epoch 11/30
70/70 [==============================] - 12s 175ms/step - loss: 0.7849 - accuracy: 0.7059 - precision_39: 0.7776 - recall_39: 0.6099 - val_loss: 1.1172 - val_accuracy: 0.6320 - val_precision_39: 0.6790 - val_recall_39: 0.5520
Epoch 12/30
70/70 [==============================] - 12s 176ms/step - loss: 0.6096 - accuracy: 0.7739 - precision_39: 0.8413 - recall_39: 0.7142 - val_loss: 1.2781 - val_accuracy: 0.5928 - val_precision_39: 0.6195 - val_recall_39: 0.5551
Epoch 13/30
70/70 [==============================] - 12s 175ms/step - loss: 0.5272 - accuracy: 0.8064 - precision_39: 0.8562 - recall_39: 0.7593 - val_loss: 1.1747 - val_accuracy: 0.6305 - val_precision_39: 0.6806 - val_recall_39: 0.5882
Epoch 14/30
70/70 [==============================] - 12s 175ms/step - loss: 0.4237 - accuracy: 0.8434 - precision_39: 0.8801 - recall_39: 0.8137 - val_loss: 1.3776 - val_accuracy: 0.5566 - val_precision_39: 0.6071 - val_recall_39: 0.5128
Epoch 15/30
70/70 [==============================] - 12s 173ms/step - loss: 0.4401 - accuracy: 0.8352 - precision_39: 0.8820 - recall_39: 0.7900 - val_loss: 1.2800 - val_accuracy: 0.5943 - val_precision_39: 0.6239 - val_recall_39: 0.5581
Epoch 16/30
70/70 [==============================] - 13s 179ms/step - loss: 0.2780 - accuracy: 0.9044 - precision_39: 0.9223 - recall_39: 0.8739 - val_loss: 1.4743 - val_accuracy: 0.6048 - val_precision_39: 0.6267 - val_recall_39: 0.5671
Epoch 17/30
70/70 [==============================] - 12s 176ms/step - loss: 0.1974 - accuracy: 0.9352 - precision_39: 0.9505 - recall_39: 0.9240 - val_loss: 1.7463 - val_accuracy: 0.5716 - val_precision_39: 0.5825 - val_recall_39: 0.5430
Epoch 18/30
70/70 [==============================] - 12s 175ms/step - loss: 0.1558 - accuracy: 0.9477 - precision_39: 0.9557 - recall_39: 0.9344 - val_loss: 1.9270 - val_accuracy: 0.5852 - val_precision_39: 0.5987 - val_recall_39: 0.5716
Epoch 19/30
70/70 [==============================] - 12s 173ms/step - loss: 0.1512 - accuracy: 0.9510 - precision_39: 0.9531 - recall_39: 0.9434 - val_loss: 2.0287 - val_accuracy: 0.5913 - val_precision_39: 0.6082 - val_recall_39: 0.5807
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 1.9466347694396973 / Test accuracy: 0.6180555820465088
In [ ]:
history = test_early_stop(path, [128],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_41"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_88 (Conv2D)           (None, 254, 254, 128)     3584      
_________________________________________________________________
max_pooling2d_44 (MaxPooling (None, 127, 127, 128)     0         
_________________________________________________________________
flatten_40 (Flatten)         (None, 2064512)           0         
_________________________________________________________________
dense_56 (Dense)             (None, 5)                 10322565  
=================================================================
Total params: 10,326,149
Trainable params: 10,326,149
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 182ms/step - loss: 31.0026 - accuracy: 0.2252 - precision_40: 0.2038 - recall_40: 0.1261 - val_loss: 1.6231 - val_accuracy: 0.3017 - val_precision_40: 0.2727 - val_recall_40: 0.0090
Epoch 2/30
70/70 [==============================] - 12s 175ms/step - loss: 1.4319 - accuracy: 0.4632 - precision_40: 0.7076 - recall_40: 0.0686 - val_loss: 1.5230 - val_accuracy: 0.3801 - val_precision_40: 0.5169 - val_recall_40: 0.0920
Epoch 3/30
70/70 [==============================] - 12s 177ms/step - loss: 0.8607 - accuracy: 0.7314 - precision_40: 0.8950 - recall_40: 0.4654 - val_loss: 1.6155 - val_accuracy: 0.3997 - val_precision_40: 0.4419 - val_recall_40: 0.2066
Epoch 4/30
70/70 [==============================] - 12s 177ms/step - loss: 0.3132 - accuracy: 0.9309 - precision_40: 0.9776 - recall_40: 0.8514 - val_loss: 1.8422 - val_accuracy: 0.4238 - val_precision_40: 0.4717 - val_recall_40: 0.3137
Epoch 5/30
70/70 [==============================] - 12s 176ms/step - loss: 0.1077 - accuracy: 0.9874 - precision_40: 0.9944 - recall_40: 0.9661 - val_loss: 2.0697 - val_accuracy: 0.4480 - val_precision_40: 0.4686 - val_recall_40: 0.3831
Epoch 6/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0445 - accuracy: 0.9968 - precision_40: 0.9968 - recall_40: 0.9947 - val_loss: 2.1553 - val_accuracy: 0.4253 - val_precision_40: 0.4466 - val_recall_40: 0.3846
Epoch 7/30
70/70 [==============================] - 12s 173ms/step - loss: 0.0288 - accuracy: 0.9976 - precision_40: 0.9976 - recall_40: 0.9974 - val_loss: 2.0581 - val_accuracy: 0.4329 - val_precision_40: 0.4592 - val_recall_40: 0.3650
Epoch 8/30
70/70 [==============================] - 12s 175ms/step - loss: 0.0207 - accuracy: 0.9987 - precision_40: 0.9987 - recall_40: 0.9987 - val_loss: 2.2145 - val_accuracy: 0.4148 - val_precision_40: 0.4366 - val_recall_40: 0.3635
Epoch 9/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0203 - accuracy: 0.9977 - precision_40: 0.9977 - recall_40: 0.9977 - val_loss: 2.3066 - val_accuracy: 0.4268 - val_precision_40: 0.4448 - val_recall_40: 0.3771
Epoch 10/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0144 - accuracy: 0.9979 - precision_40: 0.9979 - recall_40: 0.9979 - val_loss: 2.2705 - val_accuracy: 0.4615 - val_precision_40: 0.4617 - val_recall_40: 0.4178
Epoch 11/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0400 - accuracy: 0.9967 - precision_40: 0.9967 - recall_40: 0.9967 - val_loss: 2.3728 - val_accuracy: 0.4057 - val_precision_40: 0.4288 - val_recall_40: 0.3544
Epoch 12/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0164 - accuracy: 0.9983 - precision_40: 0.9983 - recall_40: 0.9983 - val_loss: 2.1612 - val_accuracy: 0.4299 - val_precision_40: 0.4562 - val_recall_40: 0.3695
Epoch 13/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0160 - accuracy: 0.9986 - precision_40: 0.9986 - recall_40: 0.9986 - val_loss: 2.3537 - val_accuracy: 0.4329 - val_precision_40: 0.4477 - val_recall_40: 0.3876
Epoch 14/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0130 - accuracy: 0.9979 - precision_40: 0.9979 - recall_40: 0.9979 - val_loss: 2.2800 - val_accuracy: 0.4193 - val_precision_40: 0.4526 - val_recall_40: 0.3741
Epoch 15/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0135 - accuracy: 0.9990 - precision_40: 0.9990 - recall_40: 0.9990 - val_loss: 2.5033 - val_accuracy: 0.4148 - val_precision_40: 0.4368 - val_recall_40: 0.3756
Epoch 16/30
70/70 [==============================] - 12s 175ms/step - loss: 0.0101 - accuracy: 0.9986 - precision_40: 0.9986 - recall_40: 0.9986 - val_loss: 2.3017 - val_accuracy: 0.4434 - val_precision_40: 0.4637 - val_recall_40: 0.3952
Epoch 17/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0158 - accuracy: 0.9980 - precision_40: 0.9980 - recall_40: 0.9980 - val_loss: 2.3024 - val_accuracy: 0.4465 - val_precision_40: 0.4664 - val_recall_40: 0.3982
Epoch 18/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0075 - accuracy: 0.9993 - precision_40: 0.9993 - recall_40: 0.9993 - val_loss: 2.2991 - val_accuracy: 0.4314 - val_precision_40: 0.4505 - val_recall_40: 0.3771
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.1481478214263916 / Test accuracy: 0.46875
In [ ]:
history = test_early_stop(path, [128,128],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_42"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_89 (Conv2D)           (None, 254, 254, 128)     3584      
_________________________________________________________________
max_pooling2d_45 (MaxPooling (None, 127, 127, 128)     0         
_________________________________________________________________
conv2d_90 (Conv2D)           (None, 125, 125, 128)     147584    
_________________________________________________________________
max_pooling2d_46 (MaxPooling (None, 62, 62, 128)       0         
_________________________________________________________________
flatten_41 (Flatten)         (None, 492032)            0         
_________________________________________________________________
dense_57 (Dense)             (None, 5)                 2460165   
=================================================================
Total params: 2,611,333
Trainable params: 2,611,333
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 15s 201ms/step - loss: 3.0281 - accuracy: 0.2631 - precision_41: 0.2738 - recall_41: 0.0432 - val_loss: 1.6417 - val_accuracy: 0.2534 - val_precision_41: 0.4526 - val_recall_41: 0.1584
Epoch 2/30
70/70 [==============================] - 12s 178ms/step - loss: 1.5466 - accuracy: 0.3366 - precision_41: 0.5917 - recall_41: 0.0354 - val_loss: 1.4982 - val_accuracy: 0.4057 - val_precision_41: 0.5000 - val_recall_41: 0.0724
Epoch 3/30
70/70 [==============================] - 13s 179ms/step - loss: 1.3303 - accuracy: 0.4547 - precision_41: 0.6291 - recall_41: 0.1673 - val_loss: 1.4220 - val_accuracy: 0.4193 - val_precision_41: 0.5231 - val_recall_41: 0.1026
Epoch 4/30
70/70 [==============================] - 13s 180ms/step - loss: 1.0318 - accuracy: 0.6315 - precision_41: 0.7973 - recall_41: 0.3686 - val_loss: 1.5759 - val_accuracy: 0.4148 - val_precision_41: 0.5053 - val_recall_41: 0.2896
Epoch 5/30
70/70 [==============================] - 12s 178ms/step - loss: 0.7096 - accuracy: 0.7588 - precision_41: 0.8724 - recall_41: 0.6037 - val_loss: 1.9503 - val_accuracy: 0.3997 - val_precision_41: 0.4392 - val_recall_41: 0.3213
Epoch 6/30
70/70 [==============================] - 12s 174ms/step - loss: 0.3560 - accuracy: 0.8941 - precision_41: 0.9430 - recall_41: 0.8330 - val_loss: 2.4026 - val_accuracy: 0.3906 - val_precision_41: 0.4132 - val_recall_41: 0.3484
Epoch 7/30
70/70 [==============================] - 12s 176ms/step - loss: 0.1564 - accuracy: 0.9651 - precision_41: 0.9734 - recall_41: 0.9472 - val_loss: 2.9528 - val_accuracy: 0.3665 - val_precision_41: 0.3744 - val_recall_41: 0.3258
Epoch 8/30
70/70 [==============================] - 12s 175ms/step - loss: 0.0707 - accuracy: 0.9864 - precision_41: 0.9916 - recall_41: 0.9833 - val_loss: 3.3236 - val_accuracy: 0.4057 - val_precision_41: 0.4098 - val_recall_41: 0.3801
Epoch 9/30
70/70 [==============================] - 12s 174ms/step - loss: 0.0430 - accuracy: 0.9955 - precision_41: 0.9958 - recall_41: 0.9945 - val_loss: 3.7697 - val_accuracy: 0.3967 - val_precision_41: 0.4029 - val_recall_41: 0.3756
Epoch 10/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0201 - accuracy: 0.9974 - precision_41: 0.9974 - recall_41: 0.9974 - val_loss: 3.7587 - val_accuracy: 0.3861 - val_precision_41: 0.3907 - val_recall_41: 0.3665
Epoch 11/30
70/70 [==============================] - 12s 176ms/step - loss: 0.0259 - accuracy: 0.9967 - precision_41: 0.9967 - recall_41: 0.9965 - val_loss: 4.1788 - val_accuracy: 0.4087 - val_precision_41: 0.4019 - val_recall_41: 0.3801
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.780939817428589 / Test accuracy: 0.4548611044883728
In [ ]:
history = test_early_stop(path, [128,128,128],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_43"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_91 (Conv2D)           (None, 254, 254, 128)     3584      
_________________________________________________________________
max_pooling2d_47 (MaxPooling (None, 127, 127, 128)     0         
_________________________________________________________________
conv2d_92 (Conv2D)           (None, 125, 125, 128)     147584    
_________________________________________________________________
max_pooling2d_48 (MaxPooling (None, 62, 62, 128)       0         
_________________________________________________________________
conv2d_93 (Conv2D)           (None, 60, 60, 128)       147584    
_________________________________________________________________
max_pooling2d_49 (MaxPooling (None, 30, 30, 128)       0         
_________________________________________________________________
flatten_42 (Flatten)         (None, 115200)            0         
_________________________________________________________________
dense_58 (Dense)             (None, 5)                 576005    
=================================================================
Total params: 874,757
Trainable params: 874,757
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 186ms/step - loss: 1.7745 - accuracy: 0.2547 - precision_42: 0.3054 - recall_42: 0.0347 - val_loss: 1.4374 - val_accuracy: 0.4072 - val_precision_42: 0.6313 - val_recall_42: 0.1523
Epoch 2/30
70/70 [==============================] - 12s 177ms/step - loss: 1.3606 - accuracy: 0.4388 - precision_42: 0.6279 - recall_42: 0.1723 - val_loss: 1.3286 - val_accuracy: 0.4661 - val_precision_42: 0.6273 - val_recall_42: 0.2564
Epoch 3/30
70/70 [==============================] - 13s 179ms/step - loss: 1.2038 - accuracy: 0.5507 - precision_42: 0.6722 - recall_42: 0.3109 - val_loss: 1.3290 - val_accuracy: 0.4751 - val_precision_42: 0.5619 - val_recall_42: 0.2670
Epoch 4/30
70/70 [==============================] - 12s 178ms/step - loss: 1.0449 - accuracy: 0.6155 - precision_42: 0.7182 - recall_42: 0.4221 - val_loss: 1.3625 - val_accuracy: 0.4842 - val_precision_42: 0.5872 - val_recall_42: 0.3605
Epoch 5/30
70/70 [==============================] - 12s 177ms/step - loss: 0.7815 - accuracy: 0.7062 - precision_42: 0.8094 - recall_42: 0.5911 - val_loss: 1.4746 - val_accuracy: 0.5083 - val_precision_42: 0.5465 - val_recall_42: 0.4163
Epoch 6/30
70/70 [==============================] - 12s 174ms/step - loss: 0.4923 - accuracy: 0.8321 - precision_42: 0.8888 - recall_42: 0.7698 - val_loss: 1.7955 - val_accuracy: 0.4917 - val_precision_42: 0.5313 - val_recall_42: 0.4480
Epoch 7/30
70/70 [==============================] - 12s 178ms/step - loss: 0.3186 - accuracy: 0.8881 - precision_42: 0.9155 - recall_42: 0.8484 - val_loss: 2.2975 - val_accuracy: 0.4962 - val_precision_42: 0.5081 - val_recall_42: 0.4751
Epoch 8/30
70/70 [==============================] - 12s 172ms/step - loss: 0.1421 - accuracy: 0.9592 - precision_42: 0.9686 - recall_42: 0.9469 - val_loss: 2.7637 - val_accuracy: 0.4947 - val_precision_42: 0.5040 - val_recall_42: 0.4736
Epoch 9/30
70/70 [==============================] - 12s 177ms/step - loss: 0.1078 - accuracy: 0.9725 - precision_42: 0.9789 - recall_42: 0.9681 - val_loss: 3.1499 - val_accuracy: 0.4887 - val_precision_42: 0.5047 - val_recall_42: 0.4842
Epoch 10/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0610 - accuracy: 0.9844 - precision_42: 0.9871 - recall_42: 0.9806 - val_loss: 3.3416 - val_accuracy: 0.4630 - val_precision_42: 0.4697 - val_recall_42: 0.4555
Epoch 11/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0420 - accuracy: 0.9977 - precision_42: 0.9977 - recall_42: 0.9971 - val_loss: 3.9894 - val_accuracy: 0.4736 - val_precision_42: 0.4792 - val_recall_42: 0.4691
Epoch 12/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0395 - accuracy: 0.9897 - precision_42: 0.9899 - recall_42: 0.9891 - val_loss: 3.5720 - val_accuracy: 0.4887 - val_precision_42: 0.5008 - val_recall_42: 0.4857
Epoch 13/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0231 - accuracy: 0.9977 - precision_42: 0.9977 - recall_42: 0.9977 - val_loss: 3.4601 - val_accuracy: 0.4691 - val_precision_42: 0.4743 - val_recall_42: 0.4600
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.2592039108276367 / Test accuracy: 0.4895833432674408
In [ ]:
history = test_early_stop(path, [128,128,128,128],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_44"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_94 (Conv2D)           (None, 254, 254, 128)     3584      
_________________________________________________________________
max_pooling2d_50 (MaxPooling (None, 127, 127, 128)     0         
_________________________________________________________________
conv2d_95 (Conv2D)           (None, 125, 125, 128)     147584    
_________________________________________________________________
max_pooling2d_51 (MaxPooling (None, 62, 62, 128)       0         
_________________________________________________________________
conv2d_96 (Conv2D)           (None, 60, 60, 128)       147584    
_________________________________________________________________
max_pooling2d_52 (MaxPooling (None, 30, 30, 128)       0         
_________________________________________________________________
conv2d_97 (Conv2D)           (None, 28, 28, 128)       147584    
_________________________________________________________________
max_pooling2d_53 (MaxPooling (None, 14, 14, 128)       0         
_________________________________________________________________
flatten_43 (Flatten)         (None, 25088)             0         
_________________________________________________________________
dense_59 (Dense)             (None, 5)                 125445    
=================================================================
Total params: 571,781
Trainable params: 571,781
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 187ms/step - loss: 1.6070 - accuracy: 0.2613 - precision_43: 0.2139 - recall_43: 0.0118 - val_loss: 1.4423 - val_accuracy: 0.4600 - val_precision_43: 0.3750 - val_recall_43: 0.0045
Epoch 2/30
70/70 [==============================] - 12s 178ms/step - loss: 1.4077 - accuracy: 0.4395 - precision_43: 0.5584 - recall_43: 0.1098 - val_loss: 1.5076 - val_accuracy: 0.3771 - val_precision_43: 0.0000e+00 - val_recall_43: 0.0000e+00
Epoch 3/30
70/70 [==============================] - 12s 176ms/step - loss: 1.3647 - accuracy: 0.4779 - precision_43: 0.5894 - recall_43: 0.1493 - val_loss: 1.2778 - val_accuracy: 0.5083 - val_precision_43: 0.6281 - val_recall_43: 0.3439
Epoch 4/30
70/70 [==============================] - 12s 177ms/step - loss: 1.1852 - accuracy: 0.5423 - precision_43: 0.6737 - recall_43: 0.3377 - val_loss: 1.3008 - val_accuracy: 0.5294 - val_precision_43: 0.6327 - val_recall_43: 0.2624
Epoch 5/30
70/70 [==============================] - 12s 178ms/step - loss: 1.1032 - accuracy: 0.5748 - precision_43: 0.6883 - recall_43: 0.3851 - val_loss: 1.1987 - val_accuracy: 0.5400 - val_precision_43: 0.6098 - val_recall_43: 0.4314
Epoch 6/30
70/70 [==============================] - 12s 178ms/step - loss: 0.8631 - accuracy: 0.6748 - precision_43: 0.7709 - recall_43: 0.5548 - val_loss: 1.2721 - val_accuracy: 0.5354 - val_precision_43: 0.6211 - val_recall_43: 0.4525
Epoch 7/30
70/70 [==============================] - 12s 177ms/step - loss: 0.7049 - accuracy: 0.7372 - precision_43: 0.8098 - recall_43: 0.6556 - val_loss: 1.2596 - val_accuracy: 0.5324 - val_precision_43: 0.6155 - val_recall_43: 0.4661
Epoch 8/30
70/70 [==============================] - 12s 178ms/step - loss: 0.4592 - accuracy: 0.8494 - precision_43: 0.8814 - recall_43: 0.7953 - val_loss: 1.5379 - val_accuracy: 0.5535 - val_precision_43: 0.5930 - val_recall_43: 0.5143
Epoch 9/30
70/70 [==============================] - 13s 179ms/step - loss: 0.2845 - accuracy: 0.9093 - precision_43: 0.9317 - recall_43: 0.8856 - val_loss: 1.8866 - val_accuracy: 0.5551 - val_precision_43: 0.5777 - val_recall_43: 0.5158
Epoch 10/30
70/70 [==============================] - 12s 177ms/step - loss: 0.2322 - accuracy: 0.9183 - precision_43: 0.9389 - recall_43: 0.9056 - val_loss: 2.2595 - val_accuracy: 0.5671 - val_precision_43: 0.5843 - val_recall_43: 0.5490
Epoch 11/30
70/70 [==============================] - 12s 179ms/step - loss: 0.1218 - accuracy: 0.9622 - precision_43: 0.9652 - recall_43: 0.9588 - val_loss: 2.9478 - val_accuracy: 0.5234 - val_precision_43: 0.5293 - val_recall_43: 0.5173
Epoch 12/30
70/70 [==============================] - 13s 180ms/step - loss: 0.0558 - accuracy: 0.9841 - precision_43: 0.9896 - recall_43: 0.9829 - val_loss: 3.0596 - val_accuracy: 0.5535 - val_precision_43: 0.5625 - val_recall_43: 0.5430
Epoch 13/30
70/70 [==============================] - 13s 180ms/step - loss: 0.0667 - accuracy: 0.9838 - precision_43: 0.9860 - recall_43: 0.9835 - val_loss: 3.0242 - val_accuracy: 0.5143 - val_precision_43: 0.5228 - val_recall_43: 0.5023
Epoch 14/30
70/70 [==============================] - 12s 178ms/step - loss: 0.0597 - accuracy: 0.9890 - precision_43: 0.9906 - recall_43: 0.9856 - val_loss: 3.2509 - val_accuracy: 0.5415 - val_precision_43: 0.5497 - val_recall_43: 0.5339
Epoch 15/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0343 - accuracy: 0.9968 - precision_43: 0.9968 - recall_43: 0.9965 - val_loss: 3.8028 - val_accuracy: 0.5535 - val_precision_43: 0.5590 - val_recall_43: 0.5505
Epoch 16/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0293 - accuracy: 0.9964 - precision_43: 0.9964 - recall_43: 0.9964 - val_loss: 4.1864 - val_accuracy: 0.5189 - val_precision_43: 0.5238 - val_recall_43: 0.5143
Epoch 17/30
70/70 [==============================] - 12s 177ms/step - loss: 0.0677 - accuracy: 0.9810 - precision_43: 0.9810 - recall_43: 0.9810 - val_loss: 3.8723 - val_accuracy: 0.5354 - val_precision_43: 0.5407 - val_recall_43: 0.5309
Epoch 18/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0582 - accuracy: 0.9808 - precision_43: 0.9819 - recall_43: 0.9799 - val_loss: 3.5254 - val_accuracy: 0.5264 - val_precision_43: 0.5332 - val_recall_43: 0.5204
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.0386593341827393 / Test accuracy: 0.5555555820465088
In [ ]:
history = test_early_stop(path, [128,128,128,128,128],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_45"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_98 (Conv2D)           (None, 254, 254, 128)     3584      
_________________________________________________________________
max_pooling2d_54 (MaxPooling (None, 127, 127, 128)     0         
_________________________________________________________________
conv2d_99 (Conv2D)           (None, 125, 125, 128)     147584    
_________________________________________________________________
max_pooling2d_55 (MaxPooling (None, 62, 62, 128)       0         
_________________________________________________________________
conv2d_100 (Conv2D)          (None, 60, 60, 128)       147584    
_________________________________________________________________
max_pooling2d_56 (MaxPooling (None, 30, 30, 128)       0         
_________________________________________________________________
conv2d_101 (Conv2D)          (None, 28, 28, 128)       147584    
_________________________________________________________________
max_pooling2d_57 (MaxPooling (None, 14, 14, 128)       0         
_________________________________________________________________
conv2d_102 (Conv2D)          (None, 12, 12, 128)       147584    
_________________________________________________________________
max_pooling2d_58 (MaxPooling (None, 6, 6, 128)         0         
_________________________________________________________________
flatten_44 (Flatten)         (None, 4608)              0         
_________________________________________________________________
dense_60 (Dense)             (None, 5)                 23045     
=================================================================
Total params: 616,965
Trainable params: 616,965
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 186ms/step - loss: 1.6050 - accuracy: 0.2450 - precision_44: 0.0377 - recall_44: 2.8773e-04 - val_loss: 1.5291 - val_accuracy: 0.3514 - val_precision_44: 0.0000e+00 - val_recall_44: 0.0000e+00
Epoch 2/30
70/70 [==============================] - 12s 178ms/step - loss: 1.4643 - accuracy: 0.3828 - precision_44: 0.5076 - recall_44: 0.0616 - val_loss: 1.3884 - val_accuracy: 0.4253 - val_precision_44: 0.6292 - val_recall_44: 0.1689
Epoch 3/30
70/70 [==============================] - 13s 180ms/step - loss: 1.3608 - accuracy: 0.4640 - precision_44: 0.5857 - recall_44: 0.1789 - val_loss: 1.3486 - val_accuracy: 0.5098 - val_precision_44: 0.5796 - val_recall_44: 0.3680
Epoch 4/30
70/70 [==============================] - 13s 179ms/step - loss: 1.3081 - accuracy: 0.5040 - precision_44: 0.6037 - recall_44: 0.2510 - val_loss: 1.3098 - val_accuracy: 0.5068 - val_precision_44: 0.6005 - val_recall_44: 0.3514
Epoch 5/30
70/70 [==============================] - 12s 178ms/step - loss: 1.2111 - accuracy: 0.5375 - precision_44: 0.6431 - recall_44: 0.3469 - val_loss: 1.3235 - val_accuracy: 0.4585 - val_precision_44: 0.6062 - val_recall_44: 0.2368
Epoch 6/30
70/70 [==============================] - 13s 179ms/step - loss: 1.1316 - accuracy: 0.5713 - precision_44: 0.7200 - recall_44: 0.3786 - val_loss: 1.2446 - val_accuracy: 0.5279 - val_precision_44: 0.6238 - val_recall_44: 0.3801
Epoch 7/30
70/70 [==============================] - 13s 180ms/step - loss: 1.0461 - accuracy: 0.5964 - precision_44: 0.7184 - recall_44: 0.4445 - val_loss: 1.2144 - val_accuracy: 0.5475 - val_precision_44: 0.6357 - val_recall_44: 0.3922
Epoch 8/30
70/70 [==============================] - 13s 182ms/step - loss: 0.9765 - accuracy: 0.6202 - precision_44: 0.7309 - recall_44: 0.4654 - val_loss: 1.2217 - val_accuracy: 0.5264 - val_precision_44: 0.6036 - val_recall_44: 0.4087
Epoch 9/30
70/70 [==============================] - 13s 180ms/step - loss: 0.8760 - accuracy: 0.6572 - precision_44: 0.7505 - recall_44: 0.5512 - val_loss: 1.2677 - val_accuracy: 0.5128 - val_precision_44: 0.5958 - val_recall_44: 0.3891
Epoch 10/30
70/70 [==============================] - 13s 180ms/step - loss: 0.8595 - accuracy: 0.6658 - precision_44: 0.7561 - recall_44: 0.5381 - val_loss: 1.2466 - val_accuracy: 0.5535 - val_precision_44: 0.6201 - val_recall_44: 0.4751
Epoch 11/30
70/70 [==============================] - 13s 178ms/step - loss: 0.7136 - accuracy: 0.7341 - precision_44: 0.7940 - recall_44: 0.6440 - val_loss: 1.1980 - val_accuracy: 0.5520 - val_precision_44: 0.6395 - val_recall_44: 0.4736
Epoch 12/30
70/70 [==============================] - 12s 177ms/step - loss: 0.6084 - accuracy: 0.7756 - precision_44: 0.8293 - recall_44: 0.7127 - val_loss: 1.3012 - val_accuracy: 0.5897 - val_precision_44: 0.6254 - val_recall_44: 0.5415
Epoch 13/30
70/70 [==============================] - 12s 177ms/step - loss: 0.5150 - accuracy: 0.8177 - precision_44: 0.8718 - recall_44: 0.7646 - val_loss: 1.4293 - val_accuracy: 0.5747 - val_precision_44: 0.6147 - val_recall_44: 0.5294
Epoch 14/30
70/70 [==============================] - 12s 176ms/step - loss: 0.4147 - accuracy: 0.8465 - precision_44: 0.8801 - recall_44: 0.8140 - val_loss: 1.4852 - val_accuracy: 0.5822 - val_precision_44: 0.6163 - val_recall_44: 0.5475
Epoch 15/30
70/70 [==============================] - 12s 173ms/step - loss: 0.3103 - accuracy: 0.8870 - precision_44: 0.9134 - recall_44: 0.8595 - val_loss: 1.6498 - val_accuracy: 0.5701 - val_precision_44: 0.6003 - val_recall_44: 0.5279
Epoch 16/30
70/70 [==============================] - 12s 178ms/step - loss: 0.2431 - accuracy: 0.9158 - precision_44: 0.9343 - recall_44: 0.8974 - val_loss: 2.1037 - val_accuracy: 0.5475 - val_precision_44: 0.5641 - val_recall_44: 0.5309
Epoch 17/30
70/70 [==============================] - 12s 177ms/step - loss: 0.2247 - accuracy: 0.9230 - precision_44: 0.9370 - recall_44: 0.9129 - val_loss: 2.0092 - val_accuracy: 0.5777 - val_precision_44: 0.5951 - val_recall_44: 0.5520
Epoch 18/30
70/70 [==============================] - 12s 178ms/step - loss: 0.1622 - accuracy: 0.9584 - precision_44: 0.9677 - recall_44: 0.9468 - val_loss: 2.6108 - val_accuracy: 0.5641 - val_precision_44: 0.5705 - val_recall_44: 0.5551
Epoch 19/30
70/70 [==============================] - 13s 180ms/step - loss: 0.1032 - accuracy: 0.9663 - precision_44: 0.9701 - recall_44: 0.9637 - val_loss: 2.7137 - val_accuracy: 0.5520 - val_precision_44: 0.5645 - val_recall_44: 0.5415
Epoch 20/30
70/70 [==============================] - 13s 183ms/step - loss: 0.0893 - accuracy: 0.9700 - precision_44: 0.9720 - recall_44: 0.9654 - val_loss: 3.1822 - val_accuracy: 0.5566 - val_precision_44: 0.5639 - val_recall_44: 0.5520
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.0249531269073486 / Test accuracy: 0.6076388955116272
In [ ]:
history = test_early_stop(path, [128,128,128,128,128,128],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_46"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_103 (Conv2D)          (None, 254, 254, 128)     3584      
_________________________________________________________________
max_pooling2d_59 (MaxPooling (None, 127, 127, 128)     0         
_________________________________________________________________
conv2d_104 (Conv2D)          (None, 125, 125, 128)     147584    
_________________________________________________________________
max_pooling2d_60 (MaxPooling (None, 62, 62, 128)       0         
_________________________________________________________________
conv2d_105 (Conv2D)          (None, 60, 60, 128)       147584    
_________________________________________________________________
max_pooling2d_61 (MaxPooling (None, 30, 30, 128)       0         
_________________________________________________________________
conv2d_106 (Conv2D)          (None, 28, 28, 128)       147584    
_________________________________________________________________
max_pooling2d_62 (MaxPooling (None, 14, 14, 128)       0         
_________________________________________________________________
conv2d_107 (Conv2D)          (None, 12, 12, 128)       147584    
_________________________________________________________________
max_pooling2d_63 (MaxPooling (None, 6, 6, 128)         0         
_________________________________________________________________
conv2d_108 (Conv2D)          (None, 4, 4, 128)         147584    
_________________________________________________________________
max_pooling2d_64 (MaxPooling (None, 2, 2, 128)         0         
_________________________________________________________________
flatten_45 (Flatten)         (None, 512)               0         
_________________________________________________________________
dense_61 (Dense)             (None, 5)                 2565      
=================================================================
Total params: 744,069
Trainable params: 744,069
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 14s 190ms/step - loss: 1.5987 - accuracy: 0.2530 - precision_45: 0.0554 - recall_45: 3.6308e-04 - val_loss: 1.5030 - val_accuracy: 0.3891 - val_precision_45: 0.5061 - val_recall_45: 0.1252
Epoch 2/30
70/70 [==============================] - 13s 187ms/step - loss: 1.4682 - accuracy: 0.3813 - precision_45: 0.5577 - recall_45: 0.0797 - val_loss: 1.4821 - val_accuracy: 0.4057 - val_precision_45: 0.5077 - val_recall_45: 0.2474
Epoch 3/30
70/70 [==============================] - 13s 179ms/step - loss: 1.3533 - accuracy: 0.4758 - precision_45: 0.5774 - recall_45: 0.2088 - val_loss: 1.4301 - val_accuracy: 0.4133 - val_precision_45: 0.5827 - val_recall_45: 0.1222
Epoch 4/30
70/70 [==============================] - 13s 180ms/step - loss: 1.3089 - accuracy: 0.4820 - precision_45: 0.6202 - recall_45: 0.2362 - val_loss: 1.2987 - val_accuracy: 0.5143 - val_precision_45: 0.6194 - val_recall_45: 0.2896
Epoch 5/30
70/70 [==============================] - 12s 178ms/step - loss: 1.1790 - accuracy: 0.5527 - precision_45: 0.6762 - recall_45: 0.3603 - val_loss: 1.2918 - val_accuracy: 0.5158 - val_precision_45: 0.6067 - val_recall_45: 0.3560
Epoch 6/30
70/70 [==============================] - 12s 178ms/step - loss: 1.1683 - accuracy: 0.5595 - precision_45: 0.6412 - recall_45: 0.3458 - val_loss: 1.2516 - val_accuracy: 0.5249 - val_precision_45: 0.6546 - val_recall_45: 0.3002
Epoch 7/30
70/70 [==============================] - 13s 180ms/step - loss: 1.0890 - accuracy: 0.5653 - precision_45: 0.6998 - recall_45: 0.4161 - val_loss: 1.1860 - val_accuracy: 0.5354 - val_precision_45: 0.6566 - val_recall_45: 0.3952
Epoch 8/30
70/70 [==============================] - 12s 179ms/step - loss: 1.0151 - accuracy: 0.6054 - precision_45: 0.7086 - recall_45: 0.4685 - val_loss: 1.2366 - val_accuracy: 0.5370 - val_precision_45: 0.6020 - val_recall_45: 0.4585
Epoch 9/30
70/70 [==============================] - 13s 181ms/step - loss: 0.8891 - accuracy: 0.6518 - precision_45: 0.7518 - recall_45: 0.5495 - val_loss: 1.2659 - val_accuracy: 0.5339 - val_precision_45: 0.5988 - val_recall_45: 0.4480
Epoch 10/30
70/70 [==============================] - 12s 180ms/step - loss: 0.8732 - accuracy: 0.6693 - precision_45: 0.7614 - recall_45: 0.5569 - val_loss: 1.2913 - val_accuracy: 0.5354 - val_precision_45: 0.6026 - val_recall_45: 0.4253
Epoch 11/30
70/70 [==============================] - 12s 178ms/step - loss: 0.7473 - accuracy: 0.7176 - precision_45: 0.7995 - recall_45: 0.6263 - val_loss: 1.3437 - val_accuracy: 0.5430 - val_precision_45: 0.5957 - val_recall_45: 0.4977
Epoch 12/30
70/70 [==============================] - 13s 182ms/step - loss: 0.5971 - accuracy: 0.7719 - precision_45: 0.8379 - recall_45: 0.7073 - val_loss: 1.2632 - val_accuracy: 0.5701 - val_precision_45: 0.6281 - val_recall_45: 0.4917
Epoch 13/30
70/70 [==============================] - 13s 178ms/step - loss: 0.5089 - accuracy: 0.8056 - precision_45: 0.8596 - recall_45: 0.7491 - val_loss: 1.3541 - val_accuracy: 0.5671 - val_precision_45: 0.6295 - val_recall_45: 0.5279
Epoch 14/30
70/70 [==============================] - 13s 182ms/step - loss: 0.4240 - accuracy: 0.8411 - precision_45: 0.8755 - recall_45: 0.8013 - val_loss: 1.5106 - val_accuracy: 0.5792 - val_precision_45: 0.6118 - val_recall_45: 0.5490
Epoch 15/30
70/70 [==============================] - 13s 178ms/step - loss: 0.2995 - accuracy: 0.8878 - precision_45: 0.9070 - recall_45: 0.8613 - val_loss: 1.5174 - val_accuracy: 0.5973 - val_precision_45: 0.6236 - val_recall_45: 0.5747
Epoch 16/30
70/70 [==============================] - 12s 177ms/step - loss: 0.2571 - accuracy: 0.9056 - precision_45: 0.9240 - recall_45: 0.8845 - val_loss: 1.9299 - val_accuracy: 0.5671 - val_precision_45: 0.5849 - val_recall_45: 0.5505
Epoch 17/30
70/70 [==============================] - 13s 179ms/step - loss: 0.1334 - accuracy: 0.9547 - precision_45: 0.9630 - recall_45: 0.9466 - val_loss: 2.1616 - val_accuracy: 0.5656 - val_precision_45: 0.5750 - val_recall_45: 0.5490
Epoch 18/30
70/70 [==============================] - 12s 177ms/step - loss: 0.2315 - accuracy: 0.9281 - precision_45: 0.9401 - recall_45: 0.9150 - val_loss: 2.3641 - val_accuracy: 0.5747 - val_precision_45: 0.5828 - val_recall_45: 0.5626
Epoch 19/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0678 - accuracy: 0.9814 - precision_45: 0.9825 - recall_45: 0.9801 - val_loss: 2.5896 - val_accuracy: 0.5762 - val_precision_45: 0.5915 - val_recall_45: 0.5701
Epoch 20/30
70/70 [==============================] - 12s 178ms/step - loss: 0.1229 - accuracy: 0.9617 - precision_45: 0.9675 - recall_45: 0.9567 - val_loss: 2.3622 - val_accuracy: 0.6078 - val_precision_45: 0.6149 - val_recall_45: 0.5973
Epoch 21/30
70/70 [==============================] - 12s 179ms/step - loss: 0.0914 - accuracy: 0.9740 - precision_45: 0.9786 - recall_45: 0.9699 - val_loss: 2.4134 - val_accuracy: 0.6003 - val_precision_45: 0.6053 - val_recall_45: 0.5852
Epoch 22/30
70/70 [==============================] - 13s 180ms/step - loss: 0.1185 - accuracy: 0.9645 - precision_45: 0.9702 - recall_45: 0.9630 - val_loss: 2.3886 - val_accuracy: 0.5611 - val_precision_45: 0.5683 - val_recall_45: 0.5520
Epoch 23/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0657 - accuracy: 0.9786 - precision_45: 0.9824 - recall_45: 0.9786 - val_loss: 2.6961 - val_accuracy: 0.5837 - val_precision_45: 0.5892 - val_recall_45: 0.5777
Epoch 24/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0315 - accuracy: 0.9936 - precision_45: 0.9949 - recall_45: 0.9934 - val_loss: 2.5694 - val_accuracy: 0.5671 - val_precision_45: 0.5783 - val_recall_45: 0.5626
Epoch 25/30
70/70 [==============================] - 13s 180ms/step - loss: 0.0489 - accuracy: 0.9909 - precision_45: 0.9909 - recall_45: 0.9890 - val_loss: 2.7002 - val_accuracy: 0.5988 - val_precision_45: 0.6081 - val_recall_45: 0.5897
Epoch 26/30
70/70 [==============================] - 13s 180ms/step - loss: 0.0952 - accuracy: 0.9718 - precision_45: 0.9747 - recall_45: 0.9713 - val_loss: 2.5748 - val_accuracy: 0.5686 - val_precision_45: 0.5846 - val_recall_45: 0.5626
Epoch 27/30
70/70 [==============================] - 13s 180ms/step - loss: 0.0458 - accuracy: 0.9924 - precision_45: 0.9927 - recall_45: 0.9921 - val_loss: 2.7732 - val_accuracy: 0.5460 - val_precision_45: 0.5471 - val_recall_45: 0.5339
Epoch 28/30
70/70 [==============================] - 13s 179ms/step - loss: 0.0638 - accuracy: 0.9842 - precision_45: 0.9848 - recall_45: 0.9828 - val_loss: 2.4931 - val_accuracy: 0.5701 - val_precision_45: 0.5760 - val_recall_45: 0.5656
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.0992560386657715 / Test accuracy: 0.6354166865348816
In [ ]:
history = test_early_stop(path, [256],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_48"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_110 (Conv2D)          (None, 254, 254, 256)     7168      
_________________________________________________________________
max_pooling2d_66 (MaxPooling (None, 127, 127, 256)     0         
_________________________________________________________________
flatten_47 (Flatten)         (None, 4129024)           0         
_________________________________________________________________
dense_63 (Dense)             (None, 5)                 20645125  
=================================================================
Total params: 20,652,293
Trainable params: 20,652,293
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 15s 196ms/step - loss: 24.3211 - accuracy: 0.2343 - precision_47: 0.2174 - recall_47: 0.1042 - val_loss: 1.5238 - val_accuracy: 0.3514 - val_precision_47: 0.5464 - val_recall_47: 0.0799
Epoch 2/30
70/70 [==============================] - 13s 188ms/step - loss: 1.2141 - accuracy: 0.5461 - precision_47: 0.7654 - recall_47: 0.2076 - val_loss: 1.4226 - val_accuracy: 0.4284 - val_precision_47: 0.5320 - val_recall_47: 0.2760
Epoch 3/30
70/70 [==============================] - 13s 187ms/step - loss: 0.5258 - accuracy: 0.8499 - precision_47: 0.9222 - recall_47: 0.7216 - val_loss: 1.5609 - val_accuracy: 0.4902 - val_precision_47: 0.5542 - val_recall_47: 0.3394
Epoch 4/30
70/70 [==============================] - 13s 186ms/step - loss: 0.1942 - accuracy: 0.9577 - precision_47: 0.9771 - recall_47: 0.9171 - val_loss: 1.8888 - val_accuracy: 0.4525 - val_precision_47: 0.4882 - val_recall_47: 0.3741
Epoch 5/30
70/70 [==============================] - 13s 187ms/step - loss: 0.0581 - accuracy: 0.9939 - precision_47: 0.9969 - recall_47: 0.9917 - val_loss: 2.2231 - val_accuracy: 0.4615 - val_precision_47: 0.4826 - val_recall_47: 0.3967
Epoch 6/30
70/70 [==============================] - 13s 187ms/step - loss: 0.0449 - accuracy: 0.9948 - precision_47: 0.9982 - recall_47: 0.9947 - val_loss: 2.2034 - val_accuracy: 0.4766 - val_precision_47: 0.4875 - val_recall_47: 0.4133
Epoch 7/30
70/70 [==============================] - 13s 188ms/step - loss: 0.0264 - accuracy: 0.9975 - precision_47: 0.9975 - recall_47: 0.9975 - val_loss: 2.4255 - val_accuracy: 0.4540 - val_precision_47: 0.4640 - val_recall_47: 0.4087
Epoch 8/30
70/70 [==============================] - 13s 187ms/step - loss: 0.0100 - accuracy: 0.9992 - precision_47: 0.9992 - recall_47: 0.9992 - val_loss: 2.3141 - val_accuracy: 0.4540 - val_precision_47: 0.4801 - val_recall_47: 0.4193
Epoch 9/30
70/70 [==============================] - 13s 190ms/step - loss: 0.0056 - accuracy: 0.9998 - precision_47: 0.9998 - recall_47: 0.9998 - val_loss: 2.2505 - val_accuracy: 0.4902 - val_precision_47: 0.5009 - val_recall_47: 0.4329
Epoch 10/30
70/70 [==============================] - 13s 187ms/step - loss: 0.0178 - accuracy: 0.9981 - precision_47: 0.9981 - recall_47: 0.9981 - val_loss: 2.2491 - val_accuracy: 0.4585 - val_precision_47: 0.4973 - val_recall_47: 0.4163
Epoch 11/30
70/70 [==============================] - 13s 185ms/step - loss: 0.0095 - accuracy: 0.9991 - precision_47: 0.9991 - recall_47: 0.9991 - val_loss: 2.1998 - val_accuracy: 0.4525 - val_precision_47: 0.4776 - val_recall_47: 0.4012
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.0706303119659424 / Test accuracy: 0.5069444179534912
In [ ]:
history = test_early_stop(path, [256,256],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_49"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_111 (Conv2D)          (None, 254, 254, 256)     7168      
_________________________________________________________________
max_pooling2d_67 (MaxPooling (None, 127, 127, 256)     0         
_________________________________________________________________
conv2d_112 (Conv2D)          (None, 125, 125, 256)     590080    
_________________________________________________________________
max_pooling2d_68 (MaxPooling (None, 62, 62, 256)       0         
_________________________________________________________________
flatten_48 (Flatten)         (None, 984064)            0         
_________________________________________________________________
dense_64 (Dense)             (None, 5)                 4920325   
=================================================================
Total params: 5,517,573
Trainable params: 5,517,573
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 22s 291ms/step - loss: 4.4624 - accuracy: 0.2328 - precision_48: 0.2037 - recall_48: 0.0311 - val_loss: 1.6069 - val_accuracy: 0.2428 - val_precision_48: 0.0000e+00 - val_recall_48: 0.0000e+00
Epoch 2/30
70/70 [==============================] - 17s 237ms/step - loss: 1.6049 - accuracy: 0.2567 - precision_48: 0.1757 - recall_48: 0.0018 - val_loss: 1.6043 - val_accuracy: 0.2941 - val_precision_48: 0.0000e+00 - val_recall_48: 0.0000e+00
Epoch 3/30
70/70 [==============================] - 16s 234ms/step - loss: 1.5687 - accuracy: 0.3235 - precision_48: 0.2702 - recall_48: 0.0083 - val_loss: 1.6237 - val_accuracy: 0.2956 - val_precision_48: 0.2966 - val_recall_48: 0.0528
Epoch 4/30
70/70 [==============================] - 17s 236ms/step - loss: 1.2312 - accuracy: 0.5264 - precision_48: 0.7790 - recall_48: 0.1984 - val_loss: 1.6243 - val_accuracy: 0.3499 - val_precision_48: 0.4176 - val_recall_48: 0.1146
Epoch 5/30
70/70 [==============================] - 17s 237ms/step - loss: 0.7965 - accuracy: 0.7328 - precision_48: 0.8750 - recall_48: 0.5496 - val_loss: 1.9251 - val_accuracy: 0.3529 - val_precision_48: 0.3917 - val_recall_48: 0.1991
Epoch 6/30
70/70 [==============================] - 17s 237ms/step - loss: 0.4931 - accuracy: 0.8483 - precision_48: 0.9325 - recall_48: 0.7353 - val_loss: 2.6763 - val_accuracy: 0.3786 - val_precision_48: 0.4043 - val_recall_48: 0.3092
Epoch 7/30
70/70 [==============================] - 17s 236ms/step - loss: 0.2762 - accuracy: 0.9276 - precision_48: 0.9696 - recall_48: 0.8746 - val_loss: 3.1895 - val_accuracy: 0.3741 - val_precision_48: 0.3895 - val_recall_48: 0.3243
Epoch 8/30
70/70 [==============================] - 17s 237ms/step - loss: 0.1372 - accuracy: 0.9692 - precision_48: 0.9826 - recall_48: 0.9480 - val_loss: 3.9176 - val_accuracy: 0.3695 - val_precision_48: 0.3812 - val_recall_48: 0.3484
Epoch 9/30
70/70 [==============================] - 17s 238ms/step - loss: 0.0688 - accuracy: 0.9926 - precision_48: 0.9954 - recall_48: 0.9842 - val_loss: 4.4446 - val_accuracy: 0.3801 - val_precision_48: 0.3888 - val_recall_48: 0.3665
Epoch 10/30
70/70 [==============================] - 17s 237ms/step - loss: 0.0373 - accuracy: 0.9956 - precision_48: 0.9985 - recall_48: 0.9948 - val_loss: 4.6541 - val_accuracy: 0.3756 - val_precision_48: 0.3784 - val_recall_48: 0.3544
Epoch 11/30
70/70 [==============================] - 17s 237ms/step - loss: 0.0334 - accuracy: 0.9977 - precision_48: 0.9982 - recall_48: 0.9975 - val_loss: 4.5257 - val_accuracy: 0.3756 - val_precision_48: 0.3831 - val_recall_48: 0.3560
Epoch 12/30
70/70 [==============================] - 17s 236ms/step - loss: 0.0295 - accuracy: 0.9955 - precision_48: 0.9955 - recall_48: 0.9937 - val_loss: 5.0584 - val_accuracy: 0.3816 - val_precision_48: 0.3838 - val_recall_48: 0.3635
Epoch 13/30
70/70 [==============================] - 17s 236ms/step - loss: 0.0443 - accuracy: 0.9969 - precision_48: 0.9969 - recall_48: 0.9963 - val_loss: 5.6473 - val_accuracy: 0.3891 - val_precision_48: 0.3888 - val_recall_48: 0.3771
Epoch 14/30
70/70 [==============================] - 17s 236ms/step - loss: 0.0114 - accuracy: 0.9988 - precision_48: 0.9988 - recall_48: 0.9986 - val_loss: 5.8181 - val_accuracy: 0.3605 - val_precision_48: 0.3715 - val_recall_48: 0.3575
Epoch 15/30
70/70 [==============================] - 17s 237ms/step - loss: 0.0985 - accuracy: 0.9867 - precision_48: 0.9874 - recall_48: 0.9855 - val_loss: 4.8383 - val_accuracy: 0.3680 - val_precision_48: 0.3776 - val_recall_48: 0.3560
Epoch 16/30
70/70 [==============================] - 17s 236ms/step - loss: 0.0871 - accuracy: 0.9779 - precision_48: 0.9785 - recall_48: 0.9757 - val_loss: 5.1105 - val_accuracy: 0.3786 - val_precision_48: 0.3825 - val_recall_48: 0.3560
Epoch 17/30
70/70 [==============================] - 16s 235ms/step - loss: 0.0475 - accuracy: 0.9891 - precision_48: 0.9890 - recall_48: 0.9880 - val_loss: 6.1318 - val_accuracy: 0.3680 - val_precision_48: 0.3715 - val_recall_48: 0.3575
Epoch 18/30
70/70 [==============================] - 17s 236ms/step - loss: 0.0208 - accuracy: 0.9966 - precision_48: 0.9966 - recall_48: 0.9965 - val_loss: 6.2873 - val_accuracy: 0.3544 - val_precision_48: 0.3616 - val_recall_48: 0.3469
Epoch 19/30
70/70 [==============================] - 16s 234ms/step - loss: 0.0109 - accuracy: 0.9988 - precision_48: 0.9988 - recall_48: 0.9987 - val_loss: 6.5813 - val_accuracy: 0.3499 - val_precision_48: 0.3538 - val_recall_48: 0.3394
Epoch 20/30
70/70 [==============================] - 17s 236ms/step - loss: 0.0155 - accuracy: 0.9971 - precision_48: 0.9981 - recall_48: 0.9967 - val_loss: 6.1003 - val_accuracy: 0.3454 - val_precision_48: 0.3537 - val_recall_48: 0.3318
Epoch 21/30
70/70 [==============================] - 17s 237ms/step - loss: 0.0172 - accuracy: 0.9977 - precision_48: 0.9977 - recall_48: 0.9970 - val_loss: 6.4217 - val_accuracy: 0.3544 - val_precision_48: 0.3573 - val_recall_48: 0.3379
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 6.4007391929626465 / Test accuracy: 0.3333333432674408
In [ ]:
history = test_early_stop(path, [256,256,256],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_50"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_113 (Conv2D)          (None, 254, 254, 256)     7168      
_________________________________________________________________
max_pooling2d_69 (MaxPooling (None, 127, 127, 256)     0         
_________________________________________________________________
conv2d_114 (Conv2D)          (None, 125, 125, 256)     590080    
_________________________________________________________________
max_pooling2d_70 (MaxPooling (None, 62, 62, 256)       0         
_________________________________________________________________
conv2d_115 (Conv2D)          (None, 60, 60, 256)       590080    
_________________________________________________________________
max_pooling2d_71 (MaxPooling (None, 30, 30, 256)       0         
_________________________________________________________________
flatten_49 (Flatten)         (None, 230400)            0         
_________________________________________________________________
dense_65 (Dense)             (None, 5)                 1152005   
=================================================================
Total params: 2,339,333
Trainable params: 2,339,333
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 20s 268ms/step - loss: 2.1808 - accuracy: 0.2591 - precision_49: 0.2107 - recall_49: 0.0259 - val_loss: 1.5019 - val_accuracy: 0.3665 - val_precision_49: 0.5573 - val_recall_49: 0.1101
Epoch 2/30
70/70 [==============================] - 17s 247ms/step - loss: 1.4801 - accuracy: 0.3697 - precision_49: 0.5751 - recall_49: 0.0846 - val_loss: 1.3598 - val_accuracy: 0.4540 - val_precision_49: 0.6465 - val_recall_49: 0.2097
Epoch 3/30
70/70 [==============================] - 17s 246ms/step - loss: 1.2715 - accuracy: 0.4898 - precision_49: 0.6574 - recall_49: 0.2435 - val_loss: 1.3129 - val_accuracy: 0.4811 - val_precision_49: 0.6566 - val_recall_49: 0.1961
Epoch 4/30
70/70 [==============================] - 17s 248ms/step - loss: 1.1677 - accuracy: 0.5366 - precision_49: 0.7122 - recall_49: 0.3221 - val_loss: 1.4426 - val_accuracy: 0.4585 - val_precision_49: 0.5406 - val_recall_49: 0.2911
Epoch 5/30
70/70 [==============================] - 17s 249ms/step - loss: 1.0484 - accuracy: 0.5969 - precision_49: 0.7273 - recall_49: 0.4206 - val_loss: 1.4969 - val_accuracy: 0.4646 - val_precision_49: 0.5459 - val_recall_49: 0.3771
Epoch 6/30
70/70 [==============================] - 17s 247ms/step - loss: 0.8406 - accuracy: 0.6832 - precision_49: 0.7543 - recall_49: 0.5649 - val_loss: 1.4268 - val_accuracy: 0.5023 - val_precision_49: 0.5672 - val_recall_49: 0.4072
Epoch 7/30
70/70 [==============================] - 17s 249ms/step - loss: 0.6272 - accuracy: 0.7741 - precision_49: 0.8418 - recall_49: 0.7057 - val_loss: 1.6920 - val_accuracy: 0.4992 - val_precision_49: 0.5336 - val_recall_49: 0.4434
Epoch 8/30
70/70 [==============================] - 17s 249ms/step - loss: 0.4061 - accuracy: 0.8606 - precision_49: 0.8948 - recall_49: 0.8115 - val_loss: 2.1374 - val_accuracy: 0.4736 - val_precision_49: 0.4940 - val_recall_49: 0.4344
Epoch 9/30
70/70 [==============================] - 17s 249ms/step - loss: 0.2369 - accuracy: 0.9218 - precision_49: 0.9401 - recall_49: 0.8995 - val_loss: 2.5430 - val_accuracy: 0.4872 - val_precision_49: 0.5000 - val_recall_49: 0.4555
Epoch 10/30
70/70 [==============================] - 18s 251ms/step - loss: 0.2068 - accuracy: 0.9376 - precision_49: 0.9516 - recall_49: 0.9174 - val_loss: 2.9920 - val_accuracy: 0.4811 - val_precision_49: 0.4873 - val_recall_49: 0.4630
Epoch 11/30
70/70 [==============================] - 17s 248ms/step - loss: 0.1210 - accuracy: 0.9641 - precision_49: 0.9682 - recall_49: 0.9541 - val_loss: 3.5423 - val_accuracy: 0.4781 - val_precision_49: 0.4906 - val_recall_49: 0.4706
Epoch 12/30
70/70 [==============================] - 17s 250ms/step - loss: 0.0928 - accuracy: 0.9874 - precision_49: 0.9907 - recall_49: 0.9862 - val_loss: 3.8583 - val_accuracy: 0.4721 - val_precision_49: 0.4802 - val_recall_49: 0.4570
Epoch 13/30
70/70 [==============================] - 17s 249ms/step - loss: 0.0460 - accuracy: 0.9923 - precision_49: 0.9931 - recall_49: 0.9919 - val_loss: 3.9429 - val_accuracy: 0.4585 - val_precision_49: 0.4618 - val_recall_49: 0.4465
Epoch 14/30
70/70 [==============================] - 18s 250ms/step - loss: 0.0507 - accuracy: 0.9877 - precision_49: 0.9886 - recall_49: 0.9873 - val_loss: 3.7348 - val_accuracy: 0.4615 - val_precision_49: 0.4648 - val_recall_49: 0.4480
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.770984172821045 / Test accuracy: 0.4826388955116272
In [ ]:

In [ ]:
history = test_early_stop(path, [256,256,256,256],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_51"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_116 (Conv2D)          (None, 254, 254, 256)     7168      
_________________________________________________________________
max_pooling2d_72 (MaxPooling (None, 127, 127, 256)     0         
_________________________________________________________________
conv2d_117 (Conv2D)          (None, 125, 125, 256)     590080    
_________________________________________________________________
max_pooling2d_73 (MaxPooling (None, 62, 62, 256)       0         
_________________________________________________________________
conv2d_118 (Conv2D)          (None, 60, 60, 256)       590080    
_________________________________________________________________
max_pooling2d_74 (MaxPooling (None, 30, 30, 256)       0         
_________________________________________________________________
conv2d_119 (Conv2D)          (None, 28, 28, 256)       590080    
_________________________________________________________________
max_pooling2d_75 (MaxPooling (None, 14, 14, 256)       0         
_________________________________________________________________
flatten_50 (Flatten)         (None, 50176)             0         
_________________________________________________________________
dense_66 (Dense)             (None, 5)                 250885    
=================================================================
Total params: 2,028,293
Trainable params: 2,028,293
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 19s 254ms/step - loss: 1.6623 - accuracy: 0.2397 - precision_50: 0.0493 - recall_50: 4.5753e-05 - val_loss: 1.5792 - val_accuracy: 0.2971 - val_precision_50: 0.0000e+00 - val_recall_50: 0.0000e+00
Epoch 2/30
70/70 [==============================] - 18s 252ms/step - loss: 1.5617 - accuracy: 0.3052 - precision_50: 0.3924 - recall_50: 0.0120 - val_loss: 1.6095 - val_accuracy: 0.2609 - val_precision_50: 0.5000 - val_recall_50: 0.1403
Epoch 3/30
70/70 [==============================] - 18s 250ms/step - loss: 1.5345 - accuracy: 0.3348 - precision_50: 0.5372 - recall_50: 0.0481 - val_loss: 1.4994 - val_accuracy: 0.3710 - val_precision_50: 0.6071 - val_recall_50: 0.0256
Epoch 4/30
70/70 [==============================] - 18s 254ms/step - loss: 1.4128 - accuracy: 0.4160 - precision_50: 0.5774 - recall_50: 0.1200 - val_loss: 1.4910 - val_accuracy: 0.3725 - val_precision_50: 0.5742 - val_recall_50: 0.1342
Epoch 5/30
70/70 [==============================] - 18s 252ms/step - loss: 1.3689 - accuracy: 0.4494 - precision_50: 0.6030 - recall_50: 0.1629 - val_loss: 1.3494 - val_accuracy: 0.4751 - val_precision_50: 0.7021 - val_recall_50: 0.0995
Epoch 6/30
70/70 [==============================] - 18s 252ms/step - loss: 1.3047 - accuracy: 0.4958 - precision_50: 0.6687 - recall_50: 0.2329 - val_loss: 1.3555 - val_accuracy: 0.4736 - val_precision_50: 0.6000 - val_recall_50: 0.0950
Epoch 7/30
70/70 [==============================] - 18s 248ms/step - loss: 1.1959 - accuracy: 0.5486 - precision_50: 0.7042 - recall_50: 0.3039 - val_loss: 1.2397 - val_accuracy: 0.4947 - val_precision_50: 0.6444 - val_recall_50: 0.3198
Epoch 8/30
70/70 [==============================] - 18s 253ms/step - loss: 1.0650 - accuracy: 0.5975 - precision_50: 0.7114 - recall_50: 0.4321 - val_loss: 1.3010 - val_accuracy: 0.4796 - val_precision_50: 0.5417 - val_recall_50: 0.2745
Epoch 9/30
70/70 [==============================] - 18s 250ms/step - loss: 0.9437 - accuracy: 0.6404 - precision_50: 0.7483 - recall_50: 0.4932 - val_loss: 1.4151 - val_accuracy: 0.5234 - val_precision_50: 0.5824 - val_recall_50: 0.3891
Epoch 10/30
70/70 [==============================] - 18s 254ms/step - loss: 0.8185 - accuracy: 0.6916 - precision_50: 0.7737 - recall_50: 0.5904 - val_loss: 1.3466 - val_accuracy: 0.5173 - val_precision_50: 0.5858 - val_recall_50: 0.4223
Epoch 11/30
70/70 [==============================] - 18s 250ms/step - loss: 0.6149 - accuracy: 0.7708 - precision_50: 0.8330 - recall_50: 0.7114 - val_loss: 1.5041 - val_accuracy: 0.5023 - val_precision_50: 0.5463 - val_recall_50: 0.4268
Epoch 12/30
70/70 [==============================] - 18s 258ms/step - loss: 0.4881 - accuracy: 0.8272 - precision_50: 0.8605 - recall_50: 0.7844 - val_loss: 1.6791 - val_accuracy: 0.4992 - val_precision_50: 0.5299 - val_recall_50: 0.4404
Epoch 13/30
70/70 [==============================] - 18s 250ms/step - loss: 0.3250 - accuracy: 0.8935 - precision_50: 0.9157 - recall_50: 0.8623 - val_loss: 2.0935 - val_accuracy: 0.5264 - val_precision_50: 0.5503 - val_recall_50: 0.4947
Epoch 14/30
70/70 [==============================] - 17s 249ms/step - loss: 0.2411 - accuracy: 0.9229 - precision_50: 0.9393 - recall_50: 0.9031 - val_loss: 2.1776 - val_accuracy: 0.5173 - val_precision_50: 0.5334 - val_recall_50: 0.4932
Epoch 15/30
70/70 [==============================] - 18s 253ms/step - loss: 0.1859 - accuracy: 0.9400 - precision_50: 0.9527 - recall_50: 0.9285 - val_loss: 2.6621 - val_accuracy: 0.5173 - val_precision_50: 0.5270 - val_recall_50: 0.5008
Epoch 16/30
70/70 [==============================] - 18s 250ms/step - loss: 0.1100 - accuracy: 0.9691 - precision_50: 0.9737 - recall_50: 0.9644 - val_loss: 2.9955 - val_accuracy: 0.5249 - val_precision_50: 0.5422 - val_recall_50: 0.5234
Epoch 17/30
70/70 [==============================] - 18s 252ms/step - loss: 0.0728 - accuracy: 0.9758 - precision_50: 0.9797 - recall_50: 0.9732 - val_loss: 3.4379 - val_accuracy: 0.4992 - val_precision_50: 0.5000 - val_recall_50: 0.4842
Epoch 18/30
70/70 [==============================] - 18s 256ms/step - loss: 0.1156 - accuracy: 0.9604 - precision_50: 0.9664 - recall_50: 0.9565 - val_loss: 3.6519 - val_accuracy: 0.5068 - val_precision_50: 0.5132 - val_recall_50: 0.4992
Epoch 19/30
70/70 [==============================] - 18s 254ms/step - loss: 0.0442 - accuracy: 0.9874 - precision_50: 0.9889 - recall_50: 0.9873 - val_loss: 3.5742 - val_accuracy: 0.5143 - val_precision_50: 0.5201 - val_recall_50: 0.5068
Epoch 20/30
70/70 [==============================] - 18s 251ms/step - loss: 0.0489 - accuracy: 0.9881 - precision_50: 0.9897 - recall_50: 0.9869 - val_loss: 3.3382 - val_accuracy: 0.5128 - val_precision_50: 0.5250 - val_recall_50: 0.5068
Epoch 21/30
70/70 [==============================] - 17s 250ms/step - loss: 0.0663 - accuracy: 0.9801 - precision_50: 0.9862 - recall_50: 0.9780 - val_loss: 3.4613 - val_accuracy: 0.5098 - val_precision_50: 0.5235 - val_recall_50: 0.5038
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.168809175491333 / Test accuracy: 0.5729166865348816
In [ ]:
history = test_early_stop(path, [256,256,256,256,256],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_52"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_120 (Conv2D)          (None, 254, 254, 256)     7168      
_________________________________________________________________
max_pooling2d_76 (MaxPooling (None, 127, 127, 256)     0         
_________________________________________________________________
conv2d_121 (Conv2D)          (None, 125, 125, 256)     590080    
_________________________________________________________________
max_pooling2d_77 (MaxPooling (None, 62, 62, 256)       0         
_________________________________________________________________
conv2d_122 (Conv2D)          (None, 60, 60, 256)       590080    
_________________________________________________________________
max_pooling2d_78 (MaxPooling (None, 30, 30, 256)       0         
_________________________________________________________________
conv2d_123 (Conv2D)          (None, 28, 28, 256)       590080    
_________________________________________________________________
max_pooling2d_79 (MaxPooling (None, 14, 14, 256)       0         
_________________________________________________________________
conv2d_124 (Conv2D)          (None, 12, 12, 256)       590080    
_________________________________________________________________
max_pooling2d_80 (MaxPooling (None, 6, 6, 256)         0         
_________________________________________________________________
flatten_51 (Flatten)         (None, 9216)              0         
_________________________________________________________________
dense_67 (Dense)             (None, 5)                 46085     
=================================================================
Total params: 2,413,573
Trainable params: 2,413,573
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 19s 257ms/step - loss: 1.6314 - accuracy: 0.2179 - precision_51: 0.3389 - recall_51: 0.0186 - val_loss: 1.5949 - val_accuracy: 0.2428 - val_precision_51: 0.0000e+00 - val_recall_51: 0.0000e+00
Epoch 2/30
70/70 [==============================] - 18s 254ms/step - loss: 1.5910 - accuracy: 0.2804 - precision_51: 0.1446 - recall_51: 8.1106e-04 - val_loss: 1.5437 - val_accuracy: 0.3243 - val_precision_51: 0.5000 - val_recall_51: 0.0015
Epoch 3/30
70/70 [==============================] - 18s 253ms/step - loss: 1.5224 - accuracy: 0.3585 - precision_51: 0.6400 - recall_51: 0.0400 - val_loss: 1.4340 - val_accuracy: 0.4314 - val_precision_51: 0.5281 - val_recall_51: 0.0709
Epoch 4/30
70/70 [==============================] - 18s 253ms/step - loss: 1.3923 - accuracy: 0.4611 - precision_51: 0.5923 - recall_51: 0.1639 - val_loss: 1.3141 - val_accuracy: 0.5023 - val_precision_51: 0.6550 - val_recall_51: 0.1976
Epoch 5/30
70/70 [==============================] - 18s 253ms/step - loss: 1.2893 - accuracy: 0.4977 - precision_51: 0.6253 - recall_51: 0.2380 - val_loss: 1.3483 - val_accuracy: 0.4615 - val_precision_51: 0.6827 - val_recall_51: 0.2142
Epoch 6/30
70/70 [==============================] - 18s 253ms/step - loss: 1.2012 - accuracy: 0.5382 - precision_51: 0.6790 - recall_51: 0.3212 - val_loss: 1.2355 - val_accuracy: 0.5354 - val_precision_51: 0.6593 - val_recall_51: 0.3620
Epoch 7/30
70/70 [==============================] - 18s 248ms/step - loss: 1.0696 - accuracy: 0.5815 - precision_51: 0.7150 - recall_51: 0.4160 - val_loss: 1.1543 - val_accuracy: 0.5520 - val_precision_51: 0.6705 - val_recall_51: 0.4389
Epoch 8/30
70/70 [==============================] - 18s 256ms/step - loss: 0.9705 - accuracy: 0.6287 - precision_51: 0.7266 - recall_51: 0.4836 - val_loss: 1.1772 - val_accuracy: 0.5505 - val_precision_51: 0.6580 - val_recall_51: 0.4208
Epoch 9/30
70/70 [==============================] - 18s 255ms/step - loss: 0.8196 - accuracy: 0.6861 - precision_51: 0.7974 - recall_51: 0.5788 - val_loss: 1.2036 - val_accuracy: 0.5747 - val_precision_51: 0.6391 - val_recall_51: 0.4540
Epoch 10/30
70/70 [==============================] - 18s 256ms/step - loss: 0.6884 - accuracy: 0.7508 - precision_51: 0.8134 - recall_51: 0.6450 - val_loss: 1.3706 - val_accuracy: 0.5551 - val_precision_51: 0.6119 - val_recall_51: 0.4947
Epoch 11/30
70/70 [==============================] - 18s 252ms/step - loss: 0.5031 - accuracy: 0.8126 - precision_51: 0.8624 - recall_51: 0.7604 - val_loss: 1.3826 - val_accuracy: 0.5837 - val_precision_51: 0.6175 - val_recall_51: 0.5309
Epoch 12/30
70/70 [==============================] - 18s 254ms/step - loss: 0.3533 - accuracy: 0.8848 - precision_51: 0.9074 - recall_51: 0.8519 - val_loss: 1.5896 - val_accuracy: 0.5792 - val_precision_51: 0.6036 - val_recall_51: 0.5490
Epoch 13/30
70/70 [==============================] - 18s 253ms/step - loss: 0.2239 - accuracy: 0.9272 - precision_51: 0.9401 - recall_51: 0.9107 - val_loss: 1.6990 - val_accuracy: 0.5882 - val_precision_51: 0.6093 - val_recall_51: 0.5551
Epoch 14/30
70/70 [==============================] - 18s 255ms/step - loss: 0.2087 - accuracy: 0.9342 - precision_51: 0.9469 - recall_51: 0.9207 - val_loss: 2.1204 - val_accuracy: 0.5626 - val_precision_51: 0.5780 - val_recall_51: 0.5475
Epoch 15/30
70/70 [==============================] - 18s 255ms/step - loss: 0.1476 - accuracy: 0.9521 - precision_51: 0.9640 - recall_51: 0.9490 - val_loss: 2.1722 - val_accuracy: 0.5837 - val_precision_51: 0.5956 - val_recall_51: 0.5686
Epoch 16/30
70/70 [==============================] - 18s 253ms/step - loss: 0.1177 - accuracy: 0.9640 - precision_51: 0.9662 - recall_51: 0.9585 - val_loss: 2.6819 - val_accuracy: 0.5641 - val_precision_51: 0.5716 - val_recall_51: 0.5596
Epoch 17/30
70/70 [==============================] - 18s 253ms/step - loss: 0.0858 - accuracy: 0.9724 - precision_51: 0.9732 - recall_51: 0.9698 - val_loss: 3.3045 - val_accuracy: 0.5460 - val_precision_51: 0.5594 - val_recall_51: 0.5400
Epoch 18/30
70/70 [==============================] - 18s 254ms/step - loss: 0.1103 - accuracy: 0.9596 - precision_51: 0.9648 - recall_51: 0.9573 - val_loss: 2.9547 - val_accuracy: 0.5747 - val_precision_51: 0.5783 - val_recall_51: 0.5626
Epoch 19/30
70/70 [==============================] - 18s 252ms/step - loss: 0.0861 - accuracy: 0.9748 - precision_51: 0.9779 - recall_51: 0.9728 - val_loss: 3.1899 - val_accuracy: 0.5535 - val_precision_51: 0.5569 - val_recall_51: 0.5460
Epoch 20/30
70/70 [==============================] - 18s 253ms/step - loss: 0.0743 - accuracy: 0.9794 - precision_51: 0.9814 - recall_51: 0.9767 - val_loss: 3.2564 - val_accuracy: 0.5852 - val_precision_51: 0.5923 - val_recall_51: 0.5807
Epoch 21/30
70/70 [==============================] - 18s 254ms/step - loss: 0.0394 - accuracy: 0.9915 - precision_51: 0.9917 - recall_51: 0.9915 - val_loss: 2.9639 - val_accuracy: 0.5867 - val_precision_51: 0.5904 - val_recall_51: 0.5762
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 2.8513450622558594 / Test accuracy: 0.5902777910232544
In [ ]:
history = test_early_stop(path, [256,256,256,256,256,256],image_width, image_height)
Found 2225 images belonging to 5 classes.
Found 663 images belonging to 5 classes.
Found 288 images belonging to 5 classes.
Model: "sequential_53"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_125 (Conv2D)          (None, 254, 254, 256)     7168      
_________________________________________________________________
max_pooling2d_81 (MaxPooling (None, 127, 127, 256)     0         
_________________________________________________________________
conv2d_126 (Conv2D)          (None, 125, 125, 256)     590080    
_________________________________________________________________
max_pooling2d_82 (MaxPooling (None, 62, 62, 256)       0         
_________________________________________________________________
conv2d_127 (Conv2D)          (None, 60, 60, 256)       590080    
_________________________________________________________________
max_pooling2d_83 (MaxPooling (None, 30, 30, 256)       0         
_________________________________________________________________
conv2d_128 (Conv2D)          (None, 28, 28, 256)       590080    
_________________________________________________________________
max_pooling2d_84 (MaxPooling (None, 14, 14, 256)       0         
_________________________________________________________________
conv2d_129 (Conv2D)          (None, 12, 12, 256)       590080    
_________________________________________________________________
max_pooling2d_85 (MaxPooling (None, 6, 6, 256)         0         
_________________________________________________________________
conv2d_130 (Conv2D)          (None, 4, 4, 256)         590080    
_________________________________________________________________
max_pooling2d_86 (MaxPooling (None, 2, 2, 256)         0         
_________________________________________________________________
flatten_52 (Flatten)         (None, 1024)              0         
_________________________________________________________________
dense_68 (Dense)             (None, 5)                 5125      
=================================================================
Total params: 2,962,693
Trainable params: 2,962,693
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
70/70 [==============================] - 19s 259ms/step - loss: 1.5972 - accuracy: 0.2491 - precision_52: 0.4774 - recall_52: 0.0103 - val_loss: 1.4670 - val_accuracy: 0.4178 - val_precision_52: 0.5556 - val_recall_52: 0.0075
Epoch 2/30
70/70 [==============================] - 18s 252ms/step - loss: 1.4846 - accuracy: 0.3839 - precision_52: 0.5357 - recall_52: 0.0764 - val_loss: 1.3956 - val_accuracy: 0.4344 - val_precision_52: 0.5549 - val_recall_52: 0.2971
Epoch 3/30
70/70 [==============================] - 18s 254ms/step - loss: 1.4011 - accuracy: 0.4382 - precision_52: 0.5821 - recall_52: 0.1735 - val_loss: 1.3957 - val_accuracy: 0.4706 - val_precision_52: 0.5943 - val_recall_52: 0.1900
Epoch 4/30
70/70 [==============================] - 18s 255ms/step - loss: 1.3376 - accuracy: 0.4720 - precision_52: 0.6042 - recall_52: 0.2241 - val_loss: 1.2962 - val_accuracy: 0.5158 - val_precision_52: 0.7014 - val_recall_52: 0.1523
Epoch 5/30
70/70 [==============================] - 18s 253ms/step - loss: 1.2948 - accuracy: 0.4885 - precision_52: 0.5953 - recall_52: 0.2447 - val_loss: 1.2752 - val_accuracy: 0.5219 - val_precision_52: 0.6182 - val_recall_52: 0.3077
Epoch 6/30
70/70 [==============================] - 18s 254ms/step - loss: 1.1869 - accuracy: 0.5483 - precision_52: 0.6483 - recall_52: 0.3523 - val_loss: 1.2521 - val_accuracy: 0.5113 - val_precision_52: 0.6096 - val_recall_52: 0.2685
Epoch 7/30
70/70 [==============================] - 18s 251ms/step - loss: 1.1127 - accuracy: 0.5692 - precision_52: 0.6870 - recall_52: 0.3906 - val_loss: 1.1995 - val_accuracy: 0.5551 - val_precision_52: 0.6684 - val_recall_52: 0.3831
Epoch 8/30
70/70 [==============================] - 18s 253ms/step - loss: 1.0154 - accuracy: 0.6160 - precision_52: 0.7208 - recall_52: 0.4567 - val_loss: 1.3423 - val_accuracy: 0.5083 - val_precision_52: 0.5986 - val_recall_52: 0.3801
Epoch 9/30
70/70 [==============================] - 18s 255ms/step - loss: 0.9359 - accuracy: 0.6517 - precision_52: 0.7364 - recall_52: 0.5057 - val_loss: 1.2308 - val_accuracy: 0.5324 - val_precision_52: 0.6442 - val_recall_52: 0.4042
Epoch 10/30
70/70 [==============================] - 18s 254ms/step - loss: 0.8036 - accuracy: 0.7100 - precision_52: 0.7949 - recall_52: 0.6016 - val_loss: 1.3470 - val_accuracy: 0.5686 - val_precision_52: 0.6147 - val_recall_52: 0.4932
Epoch 11/30
70/70 [==============================] - 18s 254ms/step - loss: 0.6948 - accuracy: 0.7435 - precision_52: 0.8119 - recall_52: 0.6773 - val_loss: 1.4371 - val_accuracy: 0.5400 - val_precision_52: 0.5829 - val_recall_52: 0.4615
Epoch 12/30
70/70 [==============================] - 18s 253ms/step - loss: 0.5627 - accuracy: 0.7950 - precision_52: 0.8509 - recall_52: 0.7310 - val_loss: 1.4236 - val_accuracy: 0.5686 - val_precision_52: 0.6147 - val_recall_52: 0.5173
Epoch 13/30
70/70 [==============================] - 18s 251ms/step - loss: 0.3957 - accuracy: 0.8570 - precision_52: 0.8858 - recall_52: 0.8241 - val_loss: 1.9069 - val_accuracy: 0.5339 - val_precision_52: 0.5677 - val_recall_52: 0.4932
Epoch 14/30
70/70 [==============================] - 18s 255ms/step - loss: 0.2948 - accuracy: 0.9008 - precision_52: 0.9244 - recall_52: 0.8717 - val_loss: 1.8705 - val_accuracy: 0.5490 - val_precision_52: 0.5695 - val_recall_52: 0.5189
Epoch 15/30
70/70 [==============================] - 18s 253ms/step - loss: 0.2893 - accuracy: 0.8938 - precision_52: 0.9203 - recall_52: 0.8646 - val_loss: 2.2153 - val_accuracy: 0.4811 - val_precision_52: 0.5036 - val_recall_52: 0.4193
Epoch 16/30
70/70 [==============================] - 18s 252ms/step - loss: 0.3472 - accuracy: 0.8792 - precision_52: 0.9093 - recall_52: 0.8494 - val_loss: 2.2006 - val_accuracy: 0.5279 - val_precision_52: 0.5502 - val_recall_52: 0.5038
Epoch 17/30
70/70 [==============================] - 18s 255ms/step - loss: 0.1928 - accuracy: 0.9421 - precision_52: 0.9514 - recall_52: 0.9272 - val_loss: 2.1694 - val_accuracy: 0.5762 - val_precision_52: 0.5886 - val_recall_52: 0.5611
Epoch 18/30
70/70 [==============================] - 18s 253ms/step - loss: 0.1261 - accuracy: 0.9669 - precision_52: 0.9705 - recall_52: 0.9612 - val_loss: 2.9376 - val_accuracy: 0.5309 - val_precision_52: 0.5475 - val_recall_52: 0.5219
Epoch 19/30
70/70 [==============================] - 18s 256ms/step - loss: 0.1818 - accuracy: 0.9424 - precision_52: 0.9485 - recall_52: 0.9367 - val_loss: 2.3127 - val_accuracy: 0.5204 - val_precision_52: 0.5385 - val_recall_52: 0.5068
Epoch 20/30
70/70 [==============================] - 18s 253ms/step - loss: 0.1432 - accuracy: 0.9525 - precision_52: 0.9564 - recall_52: 0.9435 - val_loss: 3.0486 - val_accuracy: 0.5143 - val_precision_52: 0.5261 - val_recall_52: 0.5008
Epoch 21/30
70/70 [==============================] - 18s 253ms/step - loss: 0.1242 - accuracy: 0.9607 - precision_52: 0.9611 - recall_52: 0.9565 - val_loss: 2.7162 - val_accuracy: 0.5490 - val_precision_52: 0.5563 - val_recall_52: 0.5294
Epoch 22/30
70/70 [==============================] - 18s 255ms/step - loss: 0.0821 - accuracy: 0.9812 - precision_52: 0.9835 - recall_52: 0.9803 - val_loss: 3.1033 - val_accuracy: 0.5189 - val_precision_52: 0.5262 - val_recall_52: 0.5158
Epoch 23/30
70/70 [==============================] - 17s 249ms/step - loss: 0.0755 - accuracy: 0.9816 - precision_52: 0.9847 - recall_52: 0.9777 - val_loss: 3.4196 - val_accuracy: 0.5460 - val_precision_52: 0.5516 - val_recall_52: 0.5400
Epoch 24/30
70/70 [==============================] - 18s 252ms/step - loss: 0.0514 - accuracy: 0.9855 - precision_52: 0.9867 - recall_52: 0.9847 - val_loss: 3.1711 - val_accuracy: 0.5505 - val_precision_52: 0.5604 - val_recall_52: 0.5460
Epoch 25/30
70/70 [==============================] - 18s 252ms/step - loss: 0.0957 - accuracy: 0.9766 - precision_52: 0.9791 - recall_52: 0.9753 - val_loss: 3.7838 - val_accuracy: 0.5430 - val_precision_52: 0.5432 - val_recall_52: 0.5309
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1877: UserWarning: `Model.evaluate_generator` is deprecated and will be removed in a future version. Please use `Model.evaluate`, which supports generators.
  warnings.warn('`Model.evaluate_generator` is deprecated and '
Test loss: 3.7600936889648438 / Test accuracy: 0.5486111044883728
In [ ]:

In [ ]: